Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Как подружить GD и Google?
Новая тема
Ответить
цитата
09/11/15 в 23:16
Doctor
точнее чекалку гугловскую...
https://developers.google.com/speed/pagespeed/insights/
если тумбы делает IM, то все ок:
"Оптимизируйте изображения - Изображения оптимизированы."
если через GD, то:
"Если сжать без потерь изображение
http://*/*/*/4a24b6/th_02.jpg
, это уменьшит его размер на 1,4 КБ (5 %)."
и такая ботва по каждой тумбе...((
и там и там ставится 85% качества... как-то можно в ГД этот косяк побороть?...)))
цитата
10/11/15 в 00:27
Ailk
попробуй Imagick'ом пожать, вроде не ругается гугл.
цитата
10/11/15 в 07:55
truethen
IM = Imagick ?
имхо: дополнительное инфо в картинку вставляется?
офф: радует что есть люди уделяющие внимание тому что гугл просит по дефолту, а не как русские ебанутые тизерки с раздутыми жипегами. Сто раз тема поднималась - но там "менагеры", а не хомосапиенс)))
цитата
10/11/15 в 13:40
Doctor
Ailk писал:
попробуй Imagick'ом пожать, вроде не ругается гугл.
так я ж и пишу, что ImageMagic(IM) кропит картинки в соответствии с требованиями гугла... нужно заставить тоже самое делать GD
цитата
10/11/15 в 13:41
Doctor
truethen писал:
IM = Imagick ?
имхо: дополнительное инфо в картинку вставляется?
нет, не вставляется ничего дополнительного... может быть такое, что GD какой-нить EXIF в картинки тулит?
цитата
10/11/15 в 14:21
johndoe2
Doctor писал:
нет, не вставляется ничего дополнительного... может быть такое, что GD какой-нить EXIF в картинки тулит?
Покажи im и gd картинку. Самому интересно
цитата
10/11/15 в 14:23
Doctor
продолжая рыть по теме, выяснил, что ни IM ни GD EXIF информацию к картинкам не дописывают... но GD добавляет комментарий (CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), quality = 85)... правда этот комментарий всего 61 байт, что явно не катит на те сокращения, которые предлагает гугл...
еще, что интересно, если сравнивать одинаковые картинки, созданные ИМ и ГД, то получается следующее:
ИМ: 100 точек на дюйм, размер файла 16,3 килобайта - гуглу все нра
ГД: 96 точек на дюйм, размер файла 15,7 килобайт (МЕНЬШЕ!) - гуглу не нра, и предлагает еще сократить...
есть мысли?...)
цитата
10/11/15 в 14:58
Doctor
johndoe2 писал:
Покажи im и gd картинку. Самому интересно
в личку кинул линки...
цитата
10/11/15 в 17:15
duke1999
пропустите через resmush.it, сервис вырезает всю ненужную ботву из картинок
цитата
10/11/15 в 17:30
johndoe2
GD сохраняет часть информации не в оптимизированном виде. Вот
http://37.1.195.56/share/test/
Там исходные картинки, прогнанные через
jpegtran -optimize
, прогнанные через
jpegoptim --strip-all
im картинка никаких выгод от прогонки не получила.
gd картинка выиграла от "optimization of entropy encoding parameters" (обе утилиты это сделали) и удаления метаданных. Первое и есть то, чего от тебя хочет гугл и то, чего gd не делает. По крайней мере по умолчанию
качество у тебя не 85, а 90.
цитата
10/11/15 в 18:01
Doctor
johndoe2 писал:
GD сохраняет часть информации не в оптимизированном виде. Вот
http://37.1.195.56/share/test/
Там исходные картинки, прогнанные через
jpegtran -optimize
, прогнанные через
jpegoptim --strip-all
im картинка никаких выгод от прогонки не получила.
gd картинка выиграла от "optimization of entropy encoding parameters" (обе утилиты это сделали) и удаления метаданных. Первое и есть то, чего от тебя хочет гугл и то, чего gd не делает. По крайней мере по умолчанию
качество у тебя не 85, а 90.
Супер!!!
а подскажи пожалуйста еще такую вещь, возможно ли модифицировать каким-либо образом GD, чтобы jpegtran -optimize выполнялось автоматом для всех вновь созданных картинок на сервере?
цитата
10/11/15 в 19:24
johndoe2
Doctor писал:
Супер!!!
а подскажи пожалуйста еще такую вещь, возможно ли модифицировать каким-либо образом GD, чтобы jpegtran -optimize выполнялось автоматом для всех вновь созданных картинок на сервере?
В исходниках imagemagick можно найте вот что
http://git.imagemagick.org/repos/ImageMagick/blob/master/coders/jpeg.c#L2284
. Как видно imagemagick вкл/выкл jpeg_info.optimize_coding в зависимости от параметра jpeg:optimize-coding. По умолчанию оптимизация включена и в libjpeg передается jpeg_info.optimize_coding=true.
Вот так отключаем оптимизацию
convert 1.png -define jpeg:optimize-coding=off -quality 90% bad.jpg
на выходе будет файл явно больше размера чем если просто
convert 1.png -quality 90% good.jpg
Если пропустить bad.jpg через оптимизатор
jpegtran -optimize bad.jpg > good2.jpg
получим файл того же размера, что good.jpg
А если заглянуть в исходники php в ext/gd/libgd/gd_jpeg.c, никаких особых настроек там не увидим. В частности cinfo.optimize_coding не устанавливается. А раз на выход imagejpeg() у нас плохой, значит по умолчанию libjpeg оптимизацию не выполняет и ее нужно включить самому.
Чтобы imagejpeg() делал оптимизацию из коробки, нужно в ext/gd/libgd/gd_jpeg.c выше строчки jpeg_start_compress (&cinfo, TRUE); поставить cinfo.optimize_coding=TRUE; и пересобрать php gd.
UPDATE Поправил true на TRUE
Последний раз редактировалось: johndoe2 (
10/11/15 в 23:17
), всего редактировалось 2 раз(а)
цитата
10/11/15 в 19:43
Doctor
johndoe2 писал:
Чтобы imagejpeg() делал оптимизацию из коробки, нужно в ext/gd/libgd/gd_jpeg.c выше строчки jpeg_start_compress (&cinfo, TRUE); поставить cinfo.optimize_coding=true; и пересобрать php gd.
спасибо огромное...
цитата
10/11/15 в 19:54
Doctor
да, не все так просто... админы говорят не собирается так...(((
С модификацией php не собирается.
>Чтобы imagejpeg() делал оптимизацию из коробки, нужно в ext/gd/libgd/gd_jpeg.c выше строчки jpeg_start_compress (&cinfo, TRUE); поставить cinfo.optimize_coding=true; и пересобрать php gd.
cinfo.optimize_coding=true;
jpeg_start_compress (&cinfo, TRUE);
/usr/work/src/php5/ext/gd/libgd/gd_jpeg.c: In function 'php_gd_gdImageJpegCtx':
/usr/work/src/php5/ext/gd/libgd/gd_jpeg.c:183: error: 'true' undeclared (first use in this function)
/usr/work/src/php5/ext/gd/libgd/gd_jpeg.c:183: error: (Each undeclared identifier is reported only once
/usr/work/src/php5/ext/gd/libgd/gd_jpeg.c:183: error: for each function it appears in.)
цитата
10/11/15 в 20:16
Doctor
нашли косяк:
cinfo.optimize_coding=
TRUE
;
jpeg_start_compress (&cinfo, TRUE);
еще раз спасибо..
цитата
10/11/15 в 23:19
johndoe2
Doctor писал:
нашли косяк:
cinfo.optimize_coding=
TRUE
;
jpeg_start_compress (&cinfo, TRUE);
еще раз спасибо..
Да сам не ожидал, что так легко это можно подправить
цитата
11/11/15 в 10:13
Ailk
нафига вам гд, если есть ИМ?
Новая тема
Ответить
Эта страница в полной версии