Все гуд, кроме одного. Если на вход отправить картинку разрешение которой больше чем 1200 пикселей по одной из ширине, то случается бедапечаль. Изображение не обрабатывается. Может кто подсказать куда копать?
Ограничение типа "Не загружайте картинки больше 1200 пикселей" для пользователей не подойдет, там люди бывают не совсем подкованные технически, что загрузить изображение для них уже событие)
Одна из функций (остальные работают с результатом полученным тут):
function prepare_image($filename_src, $filename_dst, $filename_watermark, $w, $h)
{
// Открываем исходное изображение
// Считаем, что картинка всегда JPEG, иначе, нужно добавить проверку по расширению
$imgsource = imagecreatefromjpeg($filename_src);
// Получаем ширину и высоту исходного изображения
$src_w = imagesx($imgsource);
$src_h = imagesy($imgsource);
// Высчитываем коэффициенты отношения исходных размеров к заданным
IF($w > 0) {$dx = $src_w / $w;} else {$dx = 0;}
IF($h > 0) {$dy = $src_h / $h;} else {$dy = 0;}
// Выбираем наибольший коэффициент
$d = max($dx, $dy);
// Получаем высоту и ширину результирующего изображения
$new_w = $src_w / $d;
$new_h = $src_h / $d;
$water_heu = $new_h - 95;
$water_w = 15;
// Создаем новое изображение, которое и будет нашим результатом
$imgdest = imagecreatetruecolor($new_w, $new_h);
// Копируем изображение-источник в изображение-результат уменьшая его
imagecopyresampled($imgdest, $imgsource, 0, 0, 0, 0, $new_w, $new_h, $src_w, $src_h);
// Накладываем ватермарк или логотип
// Считаем, что картинка всегда PNG, иначе, нужно добавить проверку по расширению
$filename_watermark = $_SERVER['DOCUMENT_ROOT']."/cms_images/kopy.png";
$imgadd = imagecreatefrompng($filename_watermark);
imagecopy($imgdest, $imgadd, $water_w, $water_heu, 0, 0, imagesx($imgadd), imagesy($imgadd));
// Сохраняем результат
imagejpeg($imgdest, $filename_dst, 100);
// Чистим мусор
imagedestroy($imgadd);
imagedestroy($imgdest);
imagedestroy($imgsource);
}