Просмотр полной версии : Загрузка картинок на сервер и изменение оазмеров
Ребят, как сделать загрузку картинок, но при этом чтобы менялся их размер и делались 3 копии, малая, средняя и оригинал? :confused: Может у кого примерчик есть?
BlackSun
12.09.2008, 09:54
Возьми любой скрипт для хостинга картинок, там полюбому будет "примерчик"
СПС, вот сразу нашел:
10 скриптов хостинга картинок!
http://i039.radikal.ru/0801/ca/b1bf2ac7404c.jpg
В архиве находятся 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
Полез ковырять...
[x26]VOLAND
12.09.2008, 12:36
Я делаю вот так:
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 - целевая картинка
Пример вызова:
resize($image, 128, '128.jpg');
resize($image, 256, '256.jpg');
Получаем 2 уменьшенные картинки разного размера.
//PS: думаю загрузку на сервер сам реализуешь.
[x26]VOLAND? то что надо! Спс! :)
imajo.ati
12.09.2008, 16:40
[x26]VOLAND
если высота картинки больше ширины, нужно задавать как раз высоту, т.к. ширина не будет известна изначально. к примеру если подгонять изображение 200x655 к 400х300
я по-другому решил это
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
но код длинный получился О_О
можно по желанию компактнее написать
скрипту нужно задать размеры для подгонки. если размер оригинала меньше размеров для подгонки, изображение не увеличивается. и в назначение копируется оригинал.
функция создает файл + возвращает, было ли изменено изображение
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot