Конвертация изображений из png в jpg

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 15 мая 2019 в 09:32
Доброго дня, Уважаемые форумчане!

Как можно сделать автоматическую конвертацию загружаемых изображений из PNG в JPG? Чтобы еще и поддержка watermark'а осталась.

Просто пользователи совсем не задумываются, когда загружают изображения 500 на 500 px размером больше мегабайта.
#2 15 мая 2019 в 10:32
поставить ограничение по размеру, что пользователи начали думать сами
#3 15 мая 2019 в 11:01


поставить ограничение по размеру, что пользователи начали думать сами

Андрей

Один из вариантов, но тоже с недостатками. Поставлю ограничение 1мб. Загрузят png 980кб, а при конвертации в jpg картинка будет 50кб весить.
На wp привык, там плагин есть, который автоматом обрезает по размерам и формат меняет и можно не думать об ограничении для юзеров.
#4 15 мая 2019 в 11:35
//Определяем размер фотографии — ширину и высоту
$size=GetImageSize ($path2);
//Создаём новое изображение из «старого»
$src=ImageCreateFromJPEG ($path2);
//Берём числовое значение ширины фотографии, которое мы получили в первой строке и записываем это число в переменную
$iw=$size[0];
//Проделываем ту же операцию, что и в предыдущей строке, но только уже с высотой.
$ih=$size[1];
//Ширину фотографии делим на 200 т.к. на выходе мы хотим получить фото шириной в 200 пикселей. В результате получаем коэфициент соотношения ширины оригинала с будущей превьюшкой.
$koe=$iw/200;
//Делим высоту изображения на коэфициент, полученный в предыдущей строке, и округляем число до целого в большую сторону — в результате получаем высоту нового изображения.
$new_h=ceil ($ih/$koe);
//Создаём пустое изображение шириной в 200 пикселей и высотой, которую мы вычислили в предыдущей строке.
$dst=ImageCreateTrueColor (200, $new_h);
//Данная функция копирует прямоугольную часть изображения в другое изображение, плавно интерполируя пикселные значения таким образом, что, в частности, уменьшение размера изображения сохранит его чёткость и яркость.
ImageCopyResampled ($dst, $src, 0, 0, 0, 0, 200, $new_h, $iw, $ih);
//Сохраняем полученное изображение в формате JPG
ImageJPEG ($dst, $path3, 80);
imagedestroy($src);

Что то типа этого?
#5 15 мая 2019 в 13:09

Что то типа этого?

@chameleon9

Для меня это немного сложно выглядит. По размерам — устраивает функционал "пресетов" из коробки. Если бы туда галочку добавить "преобразовать в jpg" — было бы идеально.
#6 15 мая 2019 в 14:12

Если бы туда галочку добавить "преобразовать в jpg" — было бы идеально.

@Kerncraft1
Есть такое в планах.
#7 15 мая 2019 в 15:30
jpg не поддерживает прозрачность и слои. Будет невозможно выложить например картинку без фона.
#8 15 мая 2019 в 19:00

Есть такое в планах.

Fuze

Отличные новости! Буду с нетерпением ждать!

jpg не поддерживает прозрачность и слои. Будет невозможно выложить например картинку без фона.

jinbiryukov

Поэтому и нужно дать право выбора. Я бы спокойно отказался от прозрачности.
#9 16 мая 2019 в 07:09

поставить ограничение по размеру, что пользователи начали думать сами

Андрей
Еще можно в ссылку на скачивание программ для сжатия носом натыкать. И страницу с инструкциями по пользованию сайтом написать.
#10 16 мая 2019 в 12:37

Еще можно в ссылку на скачивание программ для сжатия носом натыкать. И страницу с инструкциями по пользованию сайтом написать.

Dmitry

Все можно — это безусловно. Но если вы хоть раз работали с крупными сайтами, где пользователями генерируется почти 100% контента, то знаете, что полностью соблюдать инструкции способны единицы из них.

В целом тему можно считать закрытой, так как Fuze, обнадежил появлением функционала конвертации в коробке.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.