Загрузка больших фоток
Есть такая проблема, что ни GD ни функция getimagesize не работают с фотками больше 1600×1200 в разрешении.
недавно нашел способ, возможно не всем поможет, но все же.
Задача такая была, не ресайзились картинки с помощью GD при заливки их на сайт, функция getimagesize ничего не возвращала, хотя файл передавался полностью и правильно.
Не долго искав, воспользовался методами модуля PHP imagick:
$image=new Imagick($_FILES['Filedata']['tmp_name']); $w=$image->getImageWidth(); $h=$image->getImageHeight();
этот кусочек кода, возвращал нам размеры картинки, далее, зная что GD не сможет изменить размеры картинки свыше 1600 на 1200, делается проверка и метод подготовки для работы с GD:
if ($w>1600 || $h>1200) { if ($w>$h) system("convert ".$_FILES['Filedata']['tmp_name']." -resize 1600x -quality 100 ".$_FILES['Filedata']['tmp_name']); else system("convert ".$_FILES['Filedata']['tmp_name']." -resize x1200 -quality 100 ".$_FILES['Filedata']['tmp_name']); }
тут ресайзится картинка программой convert из пакета ImageMagick
после чего наша картинка становится пригодной для работы в GD
PS: данный метод только для тех, кому нужно работать с картинками среднего разрешения.
Для больших разрешений — используйте ImageMagick только.
Последние комментарии