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 картинку. Самому интересно


в личку кинул линки... icon_wink.gif
цитата
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.


спасибо огромное... smail54.gif
цитата
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);

еще раз спасибо.. smail54.gif
цитата
10/11/15 в 23:19
 johndoe2
Doctor писал:

нашли косяк:

cinfo.optimize_coding=TRUE;
jpeg_start_compress (&cinfo, TRUE);

еще раз спасибо.. smail54.gif


Да сам не ожидал, что так легко это можно подправить
цитата
11/11/15 в 10:13
 Ailk
нафига вам гд, если есть ИМ?


Эта страница в полной версии