Ребят, как сделать загрузку картинок, но при этом чтобы менялся их размер и делались 3 копии, малая, средняя и оригинал? Может у кого примерчик есть?
СПС, вот сразу нашел: 10 скриптов хостинга картинок! В архиве находятся 10 популярных скриптов для создания хостинга картинок. Теперь выбрав наиболее понравившийся скрипт, Вы сможете создать собственный сервис по хранению изображений, наподобие foto.radikal, imageshack или других подобных сайтов. Список скриптов в архиве (1.42 Mb): CoSiS Free Image Host Script EasyImageHoster 1.35 GMPH v1.0.3 Image Upload Image Host Script 0.7 DXL dev\' Image Hosting Script ImgUpload 2.0.1 UPLOADIMAGE v1.02 imageshack.us Clone eXtreme Photo Hosting 2006 http://letitbit.net/download/9535a8173129/kpot.net-image.zip.html http://depositfiles.com/files/2987111 Полез ковырять...
Я делаю вот так: PHP: function resize($image, $new_width, $target) { if (file_exists($image)) { $image = ImageCreateFromJPEG($image); $width = Imagesx($image); $height = Imagesy($image); $new_height = ($new_width * $height) / $width ; $thumb = ImageCreateTrueColor($new_width,$new_height); ImageCopyResampled($thumb, $image, 0,0,0,0, $new_width, $new_height, $width, $height); ImageJPEG($thumb, $target, 100); Imagedestroy($image); } } $image - исходная картинка $new_width - новая ширина (относительно неё происходит ресайз) $target - целевая картинка Пример вызова: PHP: resize($image, 128, '128.jpg'); resize($image, 256, '256.jpg'); Получаем 2 уменьшенные картинки разного размера. //PS: думаю загрузку на сервер сам реализуешь.
[x26]VOLAND если высота картинки больше ширины, нужно задавать как раз высоту, т.к. ширина не будет известна изначально. к примеру если подгонять изображение 200x655 к 400х300 я по-другому решил это PHP: function open_image($file) { $im = @imagecreatefromjpeg($file); if ($im !== false) return $im; $im = @imagecreatefromgif($file); if ($im !== false) return $im; $im = @imagecreatefrompng($file); if ($im !== false) return $im; $im = @imagecreatefromgd2($file); if ($im !== false) return $im; $im = @imagecreatefromwbmp($file); if ($im !== false) return $im; $im = @imagecreatefromxbm($file); if ($im !== false) return $im; $im = @imagecreatefromstring(file_get_contents($file)); if ($im !== false) return $im; return 'error'; } //end_func function imageresize($outfile,$infile,$neww,$newh) { $im = open_image($infile); if ( $im === 'error' ) return false; else { $imajo_w = imagesx($im); $imajo_h = imagesy($im); if ( $imajo_w > $neww OR $imajo_h > $newh ) { $nat = true; if ( $imajo_w > $neww AND $imajo_h <= $newh ) { $percent = $imajo_w / $neww; $new_width = $neww; $new_height = $imajo_h / $percent; } elseif ( $imajo_w <= $neww AND $imajo_h > $newh ) { $percent = $imajo_h / $newh; $new_height = $newh; $new_width = $imajo_w / $percent; } else { $percent_h = $imajo_h / $newh; $percent_w = $imajo_w / $neww; if ( $percent_h > $percent_w ) { $new_height = round($imajo_h / $percent_h); $new_width = round($imajo_w / $percent_h); } else { $new_height = round($imajo_h / $percent_w); $new_width = round($imajo_w / $percent_w); } } $im1 = imagecreatetruecolor($new_width,$new_height); imagecopyresampled($im1,$im,0 ,0 ,0 ,0 ,$new_width,$new_height,imagesx($im),imagesy($im)); } else { $im1 = false; $nat = false; } if ( $im1 === false ) { imagejpeg($im,$outfile,75); imagedestroy($im); } else { imagejpeg($im1,$outfile,75); imagedestroy($im); imagedestroy($im1); } return $nat; } } //end_func но код длинный получился О_О можно по желанию компактнее написать скрипту нужно задать размеры для подгонки. если размер оригинала меньше размеров для подгонки, изображение не увеличивается. и в назначение копируется оригинал. функция создает файл + возвращает, было ли изменено изображение