Вообщем сабж Допустим у меня на сайт есть картинки разного разрешения, в формате Jpg. Это на случай если кто нажмёт "download original file", а как для preview хотелось бы что бы все картинки одинаково выводились размером 600x440 А ещё лучше сжимались в ширине до 600 пропорционально высоте, как уж выйдет. Помню что должна быть какая то поддержка со стороны сервера. Но вообщем, как это назвать и где бы поискать? Саму процедуру обработки image'ов =) Большое спасибо!
вобще рекомендую сделать отдельную папку с уже готовыми превюшками, так как их сжатие будет занимать не мало времени! а вот собсна и функция для сжатия: PHP: /*********************************************************************************** Функция img_resize("имя исходного файла", " имя генерируемого файла", " ширина ", "высота" ," качество генерируемого JPEG, по умолчанию - максимальное ","цвет фона, по умолчанию - белый") ***********************************************************************************/ function img_resize($src, $dest, $width, $height, $quality=100, $rgb=0xFFFFFF) { if (!file_exists($src)) return false; $size = getimagesize($src); if ($size === false) return false; // Определяем исходный формат по MIME-информации, предоставленной // функцией getimagesize, и выбираем соответствующую формату // imagecreatefrom-функцию. $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1)); $icfunc = "imagecreatefrom" . $format; if (!function_exists($icfunc)) return false; $x_ratio = $width / $size[0]; $y_ratio = $height / $size[1]; $ratio = min($x_ratio, $y_ratio); $use_x_ratio = ($x_ratio == $ratio); $new_width = $use_x_ratio ? $width : floor($size[0] * $ratio); $new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio); $isrc = $icfunc($src); $idest = imagecreatetruecolor($new_width, $new_height); imagefill($idest, 0, 0, $rgb); imagecopyresampled($idest, $isrc, 0, 0, 0, 0, $new_width, $new_height, $size[0], $size[1]); for($i=strlen($dest)-1;$i>=0;$i--) if($dest[$i]=='.') break; $i++; $ftypeg=""; while($i<strlen($dest)) { $ftypeg.=$dest[$i]; $i++; } if(strtolower($ftypeg)=="jpg") $ftypeg="jpeg"; $ftypeg="image".$ftypeg; if (!function_exists($ftypeg)) return false; $ftypeg($idest, $dest, $quality); imagedestroy($isrc); imagedestroy($idest); return true; } в данном случае, результат свое работы она сохраняет на диске, можно сделать чтоб сразу вывадило, но не рекомендую!
Большое спасибо, на счёт маленьких превьюшек 100 на 100 это уже отдельно сделано, а вот захотят ли посмотреть на саму работу, это ещё по линку перейти надо. Поэтому происходить будет выборочно... Интересно сколько примерно ресурсов компьютера будет требовать одно такое обращение? И сколько времени сам скрипт будет занимать... Уж действительно может лучше отдельно залить, а то при n'ом количестве посещений и запросов нагрузка будет чрезвычайна последствиями Так и сервак можно убить если захотеть
кодирование одной картинке займет около ~2 секунд я так пологая у тя тм будет галерея..... короч лучше сделай 3 папки, одно с превюхами дето 100Х100, вторая для просмотра гдет 640Х480 а третья с фотками для скачки там уже от 1024Х768 и выше....
А можно ли сделать такую вещь: Но с условием что при указании scr картинка просто складывалась относительно пропорциям... То есть не теряя форму, не растягивалась только в ширину или только в длинну...