Сжатие изображений (PHP)
Пишу скрипт сжатия изображений, чтобы посетители сайта могли загружать в качестве аватара любое изображение. Использую функцию imagecopymerge. В принципе всё работает, но иногда возникают проблемы с некоторыми *.PNG.
Есть подозрение, что библиотека GD обрабатывает не все форматы PNG... |
С какими именно PNG? С полупрозрачностью?
Какой функцией получаете ресурс? imagecreatefrompng? |
Вот, убрал всё лишнее, оставил код только для PNG. In the end должна получаться уменьшенная копия шириной в 90px. Пропорциональное изменение высоты нужно для не квадратных аватаров. При отображении на странице ширина задаётся жёстко (90px) а высота в диапазоне от min-height до max-height (для браузеров "понимающих" эти свойства).
// Если размер файла больше 15 КБ if ( $_FILES['file']['size'] > 15000 ) { // Открытие переданного изображения $src = imagecreatefrompng($newFileName); // Получение размера загруженного изображения $imgInfo = getimagesize($newFileName); // Масштабный коэффициент $scale = 90/$imgInfo[0]; // Новая высота $newheight = $imgInfo[1]*$scale; settype($newheight, "integer"); // Создание нового изображения $dest = imagecreatetruecolor(90, $newheight); // Копирование изображения imagecopyresampled($dest, $src, 0, 0, 0, 0, 90, $newheight, $imgInfo[0], $imgInfo[1]); // Запись изображения в файл imagepng($dest, $newFileName, 100); // Освобождение памяти imagedestroy($dest); imagedestroy($src); } Проблемы возникают только с PNG имеющими прозрачность. |
Цитата:
quality Compression level: from 0 (no compression) to 9. |
не понимаю, зачем поднимать темы чуть ли не трех летней давности.
|
Цитата:
|
=)
|
Цитата:
Tim, Не мучай GD и пользователей, пусть грузят что хотят в размер. |
Gozar,
Я уже сейчас тоже так думаю, всё равно все на безлимитке сидят Цитата:
|
не "сжимать", а "делать ресамплинг/давнсамплинг"
|
Цитата:
|
хех, старая тема, но http://www.cyberforum.ru/php-beginne...ead239820.html
вероятно дело в том, что для схожей функции imagejpeg в мануале написано: Цитата:
|
Часовой пояс GMT +3, время: 05:29. |