![]() |
|
   [ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ] |
|
|
Правильный ресайз картинок на PHPДовольно часто при работе требуется изменить размеры картинки, и большинство примеров которые есть в инете на содержат маленькую ошибку, из-за которой изменённые картинки теряют свои цвета, а всё дело то в одной строке... приведу здесь код своей функции для ресайза (не полностью). На вход подаются путь к изменяемой картинке, новая ширина и высота. Если размеры меньше новых размеров то ресайз не осуществляется.
CODE
<!--ec1-->
function SetImgSize($img, $width, $height) { //получаем тип файла { case "jpg": $srcImage = @ImageCreateFromJPEG($img); break; case "gif": $srcImage = ImageCreateFromGIF($img); break; case "png": $srcImage = ImageCreateFromPNG($img); break; default: return -1; break; } $srcWidth = ImageSX($srcImage); $srcHeight = ImageSY($srcImage); if(($width < $srcWidth) || ($height < $srcHeight)) { $ratioWidth = $srcWidth/$width; $ratioHeight = $srcHeight/$height; if($ratioWidth < $ratioHeight) { $destWidth = $srcWidth/$ratioHeight; $destHeight = $height; } else { $destWidth = $width; $destHeight = $srcHeight/$ratioWidth; } //вот где собака порылась - везде стоит функция ImageCreate(...) $resImage = ImageCreateTrueColor($destWidth, $destHeight); ImageCopyResampled($resImage, $srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight); unlink($img); //определяем тип { case "jpg": ImageJPEG($resImage, $img, 100); break; case "gif": ImageGIF($resImage, $img); break; case "png": ImagePNG($resImage, $img); break; } ImageDestroy($srcImage); ImageDestroy($resImage); } } Источник:
Ваш комментарий к данному материалу будет интересен нам и нашим читателям!
|
|
WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects |
|