powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / phpThumb: ускорение генерации пакета миниатюр для одного изображения
8 сообщений из 8, страница 1 из 1
phpThumb: ускорение генерации пакета миниатюр для одного изображения
    #39027020
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С помощью 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 не освобождать ресурс исходного изображения ?
...
Рейтинг: 0 / 0
phpThumb: ускорение генерации пакета миниатюр для одного изображения
    #39027052
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02Можно перегрузить метод phpThumb::GenerateThumbnail() , но это не лучший вариант, т.к. придётся дублировать много оригинального кода. И при каждом обновлении библиотеки phpThumb этот перегруженный метод также придётся обновлять.
почему-же.
просто написать свой класс-потомок от phpThumb. в котором перегрузить и изменить нужные методы.
...
Рейтинг: 0 / 0
phpThumb: ускорение генерации пакета миниатюр для одного изображения
    #39027094
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпочему-же. ...это не лучший вариант, т.к. придётся дублировать много оригинального кода . И при каждом обновлении библиотеки phpThumb этот перегруженный метод также придётся обновлять.

Собственно, это проблема организации кода оригинальной библиотеки. Всё в куче. Перегрузка метода phpThumb::GenerateThumbnail() породит сильную зависимость своего метода (перегружаемого оригинальный) от оригинальных исходных кодов этого метода.
...
Рейтинг: 0 / 0
phpThumb: ускорение генерации пакета миниатюр для одного изображения
    #39027421
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02,

чудес не бывает. и само оно не заработает. любое решение будет зависеть от библиотеки и ее кодов. если только вообще от нее не отказаться )
...
Рейтинг: 0 / 0
phpThumb: ускорение генерации пакета миниатюр для одного изображения
    #39027435
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор 1. Генерация превью начинается с самой большой из них. Далее для каждой генерируемой миниатюры в качестве исходного файла берётся предыдущая сгенерированная миниатюра. В этом случае время обработки одного изображения сокращается до 2,5 сек. Уже лучше.

Вопрос 1. В этом случае не пострадает ли качество генерируемых миниатюр ?
Вот на этот вопрос каким будет ответ ?
...
Рейтинг: 0 / 0
phpThumb: ускорение генерации пакета миниатюр для одного изображения
    #39027528
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02Вот на этот вопрос каким будет ответ ?
зависит от размера миниатюр. может там некоторые миниатюры обрезаются как-то непропорционально, или центруются. если просто ресайз - то проблем заметных не должно быть.
...
Рейтинг: 0 / 0
phpThumb: ускорение генерации пакета миниатюр для одного изображения
    #39027529
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u,

о каких размерах вообще идет речь? исходного и копий?
если исходное большое, а миниатюры совсем мелкие, то вначале можно уменьшить его с пом. imagecopyresized . она быстрая. а далее уже делать миниатюры с пом. imagecopyresampled
, ибо она медленнее т.к. еще есть сглаживание.
или если все это так критично, вообще отказаться от GD в пользу ImageMagick какогонить. там скорости и возможности совсем другие. написать один раз самому быструю функцию ресайза и юзать её для всех миниатюр.
ибо кардинально тут мало что можно сделать (с phpThumb). только мучительно оттягивать момент ухода от нее. раз уже щас неустраивает скорость.
...
Рейтинг: 0 / 0
phpThumb: ускорение генерации пакета миниатюр для одного изображения
    #39028543
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторо каких размерах вообще идет речь? исходного и копий?Исходное - 5-8 Мб (4800 х 3600 и выше), миниатюры - от 30х30 до 1000х1000 px.

авторесли исходное большое, а миниатюры совсем мелкие, то вначале можно уменьшить его с пом. imagecopyresized . она быстрая. а далее уже делать миниатюры с пом. imagecopyresampled
, ибо она медленнее т.к. еще есть сглаживание.В этом случае придётся создавать один дополнительный служебный (уменьшенный относительно оригинала) экземпляр изображения в качестве базового для создания миниатюр. Но можно в качестве такого базового взять самую крупную из миниатюр (и создавать её нужно будет со сглаживанием, т.к. это рабочая миниатюра). В этом случае "лишних" экземпляров изображения создавать не придётся. Либо, как я написал выше, для каждой миниатюры в качестве базовой брать предыдущую созданную (на один шаг большего размера).

Здесь вопрос скорее в том, будет ли миниатюра, созданная из сглаженного изображения (imagecopyresampled ), худшего качества, нежели миниатюра, созданная из несглаженного изображения ( imagecopyresized ).

авторили если все это так критично, вообще отказаться от GD в пользу ImageMagick какогонить
ибо кардинально тут мало что можно сделать (с phpThumb). только мучительно оттягивать момент ухода от нее. раз уже щас неустраивает скорость.Насколько я знаю, phpThumb как раз и использует функции библиотек GD и ImageMagick. Самостоятельно он изображения не обрабатывает. И по возможности использует ImageMagick (если установлен и настроен), если нет - GD. Вроде так. Тогда отказ от phpThumb выглядит абсурдным и может быть целесообразным только если использовать иные (более быстрые) библиотеки, нежели GD и ImageMagick.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / phpThumb: ускорение генерации пакета миниатюр для одного изображения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]