Часть моего приложения включает в себя интенсивное использование обработки изображений с помощью таких функций, как обрезка, изменение размера, фильтры, яркость и т.д.PHP GD & Imagick - Есть ли способ измерить ход манипулирования изображениями?
Есть в любом случае для измерения прогресса GD и/или ImageMajick в то время как манипуляции изображения происходит? Я хотел бы быть в состоянии вынести на стороне клиента прогресс бар следующим образом: -
- Подробная информация о манипуляции собирается на стороне клиента и размещен на сервере
- На POST procress бар оказывается на стороне клиента, начиная с 0%.
- сервер запускает GD или Imagick и обрабатывает изображение, в течение которого он возвращает данные о текущем обновлении клиента.
- Промежуточная ширина полосы выполнения изменена с помощью javascript, чтобы отразить возвращенные данные о ходе выполнения.
- В конце концов, когда процесс обработки изображений завершен, новое имя файла отправляется обратно клиенту, а src тега обновляется.
- Событие onload обнаружено на изображении и, наконец, после его рендеринга индикатор выполнения достигает 100%, и изображение отображается пользователю.
Если нет возможности получить данные о ходе работы от GD или Imagick, может ли кто-нибудь предложить способ «подделать»?
Я рассмотрел рендеринг пустого индикатора выполнения перед POST, оживив его до 70% после того, как произошла манипуляция, и клиент получает обратно ответ ajax. Затем, наконец, оживление до 100%, как только новое изображение будет полностью загружено, обнаружив событие onload.
Если это мой единственный вариант, то пусть будет так. Но мне это кажется «неуклюжим».
Любые идеи?
EDIT - Я только что видел, что версия для командной строки ImageMajick имеет опцию «-monitor», который возвращает прогресс, так что я могу быть в состоянии выбить что-нибудь опросом это каждые 50мс или около того. Есть ли что-то подобное для GD, однако, поскольку мы используем GD/Imagick в зависимости от требуемых манипуляций.