Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
phpThumb: ускорение генерации пакета миниатюр для одного изображения
|
|||
|---|---|---|---|
|
#18+
С помощью phpThumb выполняется генерация 8 jpeg-миниатюр разных разрешений (без crop'а - только масштабирование с сохранением пропорций ). Исходные изображения весят 5-8 Мб. Если выполнять генерацию в лоб (без всяких оптимизаций) - времени уходит 11-15 сек на одно изображение. Неприемлемый вариант. Здесь возможны 2 оптимизации: 1. Генерация превью начинается с самой большой из них. Далее для каждой генерируемой миниатюры в качестве исходного файла берётся предыдущая сгенерированная миниатюра. В этом случае время обработки одного изображения сокращается до 2,5 сек. Уже лучше. Вопрос 1. В этом случае не пострадает ли качество генерируемых миниатюр ? Или разницы заметно практически не будет ? (на тестовом изображении разницы не заметил, как будет на остальных - не знаю) 2. Для генерации всех миниатюр используется один объект phpThumb. Но проблема здесь в том, что метод phpThumb::GenerateThumbnail() после генерации миниатюры удаляет (освобождает) ресурс, соответствующий исходному изображению (это поле gdimg_source ). Соответственно, при генерации следующей миниатюры тем же экземпляром объекта phpThumb , ресурс исходного изображение снова будет сгенерирован из файла (затратная по времени операция). Можно перегрузить метод phpThumb::GenerateThumbnail() , но это не лучший вариант, т.к. придётся дублировать много оригинального кода. И при каждом обновлении библиотеки phpThumb этот перегруженный метод также придётся обновлять. Вопрос 2. Как без перегрузки метода phpThumb::GenerateThumbnail() заставить phpThumb не освобождать ресурс исходного изображения ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 13:46 |
|
||
|
phpThumb: ускорение генерации пакета миниатюр для одного изображения
|
|||
|---|---|---|---|
|
#18+
Cyrax_02Можно перегрузить метод phpThumb::GenerateThumbnail() , но это не лучший вариант, т.к. придётся дублировать много оригинального кода. И при каждом обновлении библиотеки phpThumb этот перегруженный метод также придётся обновлять. почему-же. просто написать свой класс-потомок от phpThumb. в котором перегрузить и изменить нужные методы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 14:28 |
|
||
|
phpThumb: ускорение генерации пакета миниатюр для одного изображения
|
|||
|---|---|---|---|
|
#18+
авторпочему-же. ...это не лучший вариант, т.к. придётся дублировать много оригинального кода . И при каждом обновлении библиотеки phpThumb этот перегруженный метод также придётся обновлять. Собственно, это проблема организации кода оригинальной библиотеки. Всё в куче. Перегрузка метода phpThumb::GenerateThumbnail() породит сильную зависимость своего метода (перегружаемого оригинальный) от оригинальных исходных кодов этого метода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 15:06 |
|
||
|
phpThumb: ускорение генерации пакета миниатюр для одного изображения
|
|||
|---|---|---|---|
|
#18+
Cyrax_02, чудес не бывает. и само оно не заработает. любое решение будет зависеть от библиотеки и ее кодов. если только вообще от нее не отказаться ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 19:17 |
|
||
|
phpThumb: ускорение генерации пакета миниатюр для одного изображения
|
|||
|---|---|---|---|
|
#18+
автор 1. Генерация превью начинается с самой большой из них. Далее для каждой генерируемой миниатюры в качестве исходного файла берётся предыдущая сгенерированная миниатюра. В этом случае время обработки одного изображения сокращается до 2,5 сек. Уже лучше. Вопрос 1. В этом случае не пострадает ли качество генерируемых миниатюр ? Вот на этот вопрос каким будет ответ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2015, 19:41 |
|
||
|
phpThumb: ускорение генерации пакета миниатюр для одного изображения
|
|||
|---|---|---|---|
|
#18+
Cyrax_02Вот на этот вопрос каким будет ответ ? зависит от размера миниатюр. может там некоторые миниатюры обрезаются как-то непропорционально, или центруются. если просто ресайз - то проблем заметных не должно быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 05:32 |
|
||
|
phpThumb: ускорение генерации пакета миниатюр для одного изображения
|
|||
|---|---|---|---|
|
#18+
r u, о каких размерах вообще идет речь? исходного и копий? если исходное большое, а миниатюры совсем мелкие, то вначале можно уменьшить его с пом. imagecopyresized . она быстрая. а далее уже делать миниатюры с пом. imagecopyresampled , ибо она медленнее т.к. еще есть сглаживание. или если все это так критично, вообще отказаться от GD в пользу ImageMagick какогонить. там скорости и возможности совсем другие. написать один раз самому быструю функцию ресайза и юзать её для всех миниатюр. ибо кардинально тут мало что можно сделать (с phpThumb). только мучительно оттягивать момент ухода от нее. раз уже щас неустраивает скорость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 05:39 |
|
||
|
phpThumb: ускорение генерации пакета миниатюр для одного изображения
|
|||
|---|---|---|---|
|
#18+
авторо каких размерах вообще идет речь? исходного и копий?Исходное - 5-8 Мб (4800 х 3600 и выше), миниатюры - от 30х30 до 1000х1000 px. авторесли исходное большое, а миниатюры совсем мелкие, то вначале можно уменьшить его с пом. imagecopyresized . она быстрая. а далее уже делать миниатюры с пом. imagecopyresampled , ибо она медленнее т.к. еще есть сглаживание.В этом случае придётся создавать один дополнительный служебный (уменьшенный относительно оригинала) экземпляр изображения в качестве базового для создания миниатюр. Но можно в качестве такого базового взять самую крупную из миниатюр (и создавать её нужно будет со сглаживанием, т.к. это рабочая миниатюра). В этом случае "лишних" экземпляров изображения создавать не придётся. Либо, как я написал выше, для каждой миниатюры в качестве базовой брать предыдущую созданную (на один шаг большего размера). Здесь вопрос скорее в том, будет ли миниатюра, созданная из сглаженного изображения (imagecopyresampled ), худшего качества, нежели миниатюра, созданная из несглаженного изображения ( imagecopyresized ). авторили если все это так критично, вообще отказаться от GD в пользу ImageMagick какогонить ибо кардинально тут мало что можно сделать (с phpThumb). только мучительно оттягивать момент ухода от нее. раз уже щас неустраивает скорость.Насколько я знаю, phpThumb как раз и использует функции библиотек GD и ImageMagick. Самостоятельно он изображения не обрабатывает. И по возможности использует ImageMagick (если установлен и настроен), если нет - GD. Вроде так. Тогда отказ от phpThumb выглядит абсурдным и может быть целесообразным только если использовать иные (более быстрые) библиотеки, нежели GD и ImageMagick. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 12:45 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=39027052&tid=1461592]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 274ms |
| total: | 413ms |

| 0 / 0 |
