ъплоуд + рисайз на картинки
8 отговора
329 прегледа
ъплоуд + рисайз на картинки
имам проблем (за пореден път):
имам скрипт за ъплоуд на картинки на сървър, който веднага след ъплоуда ги оразмерява. обаче явно има някакъв бъг, защото при преоразмеряването качеството на картинката се губи адски много (отвсякъде се преебават цветовете - в смисъл че май че намаляват драстично)
трябва ли да правя някакви проверки дали картинката е ъплоудната преди да започна да я манипулирам и дали от това може да е проблемът. ако те така, моля, напишете ми точно някакви идеи за проверка
имам скрипт за ъплоуд на картинки на сървър, който веднага след ъплоуда ги оразмерява. обаче явно има някакъв бъг, защото при преоразмеряването качеството на картинката се губи адски много (отвсякъде се преебават цветовете - в смисъл че май че намаляват драстично)
трябва ли да правя някакви проверки дали картинката е ъплоудната преди да започна да я манипулирам и дали от това може да е проблемът. ако те така, моля, напишете ми точно някакви идеи за проверка
Re: ъплоуд + рисайз на картинки
я да видим как ги оразмеряваш, най вероятно имаш някое драстично сваляне на качеството като правиш новия image
root@localhost#cd /pub
root@localhost#more beer
root@localhost#cd /pub
root@localhost#more beer
Re: функцията
if (!is_array($input)) {
$array[0] = $input;
} else {
$array = $input;
}
$return = "";
for($i = 0; $i < count($array); $i++) {
//calculate the new size of the image
$properties = GetImageSize(imgfolder."/".$array[$i]);
$orgwt = $properties[0];
$orght = $properties[1];
$ratio = $orgwt/$orght;
$ratio = round($ratio, 5);
$newht = basesize;
$newwt = round($newht*$ratio);
//if($orght == basesize) {continue; }
//create links to the original & new image
eregi("^.+\.(jpeg|jpg|png|gif)$", $array[$i], $type);
$type = strtolower($type[1]);
if($type == "jpg" OR $type == "jpeg") {
$org_im = ImageCreateFromJpeg(imgfolder."/".$array[$i]);
} elseif ($type == "gif") {
$org_im = ImageCreateFromGif(imgfolder."/".$array[$i]);
} elseif ($type == "png") {
$org_im = ImageCreateFromPng(imgfolder."/".$array[$i]);
}
$cop_im = ImageCreate($newwt, $newht);
//resize the image
$created = ImageCopyResized ( $cop_im,
$org_im,
0, 0,
0, 0,
$newwt, $newht,
$orgwt, $orght
);
//record the image
if($type == "jpg" OR $type == "jpeg") {
ImageJpeg($cop_im, imgfolder."/".$array[$i], 90);
} elseif ($type == "gif") {
ImageGif(imgfolder."/".$cop_im, $array[$i]);
} elseif ($type == "png") {
ImagePng(imgfolder."/".$cop_im, $array[$i]);
}
//destroy the images
ImageDestroy($org_im);
ImageDestroy($cop_im);
$array[0] = $input;
} else {
$array = $input;
}
$return = "";
for($i = 0; $i < count($array); $i++) {
//calculate the new size of the image
$properties = GetImageSize(imgfolder."/".$array[$i]);
$orgwt = $properties[0];
$orght = $properties[1];
$ratio = $orgwt/$orght;
$ratio = round($ratio, 5);
$newht = basesize;
$newwt = round($newht*$ratio);
//if($orght == basesize) {continue; }
//create links to the original & new image
eregi("^.+\.(jpeg|jpg|png|gif)$", $array[$i], $type);
$type = strtolower($type[1]);
if($type == "jpg" OR $type == "jpeg") {
$org_im = ImageCreateFromJpeg(imgfolder."/".$array[$i]);
} elseif ($type == "gif") {
$org_im = ImageCreateFromGif(imgfolder."/".$array[$i]);
} elseif ($type == "png") {
$org_im = ImageCreateFromPng(imgfolder."/".$array[$i]);
}
$cop_im = ImageCreate($newwt, $newht);
//resize the image
$created = ImageCopyResized ( $cop_im,
$org_im,
0, 0,
0, 0,
$newwt, $newht,
$orgwt, $orght
);
//record the image
if($type == "jpg" OR $type == "jpeg") {
ImageJpeg($cop_im, imgfolder."/".$array[$i], 90);
} elseif ($type == "gif") {
ImageGif(imgfolder."/".$cop_im, $array[$i]);
} elseif ($type == "png") {
ImagePng(imgfolder."/".$cop_im, $array[$i]);
}
//destroy the images
ImageDestroy($org_im);
ImageDestroy($cop_im);
Re: функцията
Я пробвай с тези :
$cop_im = imageCreateTrueColor($newwt, $newht);
imageAntiAlias($cop_im ,true);
$created = imageCopyResampled($cop_im , $org_im , 0, 0, 0, 0,$newwt, $newht,$orgwt, $orght );
root@localhost#cd /pub
root@localhost#more beer
$cop_im = imageCreateTrueColor($newwt, $newht);
imageAntiAlias($cop_im ,true);
$created = imageCopyResampled($cop_im , $org_im , 0, 0, 0, 0,$newwt, $newht,$orgwt, $orght );
root@localhost#cd /pub
root@localhost#more beer
RTFM
виж ко пише в хелпа за ресайз...май имаше един параметър, дето отговаря за качеството - сложи го на макс.....
[линк]
[линк]
Re: функцията
последния параметър е качеството, пък ако не помага, в php.net user comments има функцийка imagecopyresizedbicybic или нещо подобно, малко бавничка е 1000 картинки ги оправя за час и нещо си, но качестовото е перфектно
-----------------------
гърбавия, ковчег ще го изправи
-----------------------
гърбавия, ковчег ще го изправи
оппа
дължа ти извинение.
всъщност не бях променил фсички функции. наистина проблема е бил в това, че не създавам 'пълноцветна' нова картинка.
сега всичко е ок.
мерси
всъщност не бях променил фсички функции. наистина проблема е бил в това, че не създавам 'пълноцветна' нова картинка.
сега всичко е ок.
мерси
Re: оппа
Ще черпиш каса бира 3 пъти и готово :-)))))
Още утре не webdev ако ще идваш
root@localhost#cd /pub
root@localhost#more beer
Още утре не webdev ако ще идваш
root@localhost#cd /pub
root@localhost#more beer