Как сохранить изображение с определенным размером файла?

Я создаю систему PHP, с помощью которой пользователи могут создавать визуально сложное изображение, конечное требование которого - 50 КБ или меньше .

Пользователь может выбрать печать текста на одном из 37 шаблонов изображений, так что в результате получается одно плоское изображение.

Текст может быть любого цвета и иметь один из нескольких шрифтов. Это означает, что конечное изображение может быть визуально сложным и непредсказуемым (за исключением размеров изображения).

Затем у меня есть требование, чтобы размер файла окончательного изображения не превышал 50 КБ (это внешнее требование и не может быть изменено).

Последнее требование (опять же внешнее) - это формат изображения должен быть .jpeg, .png или .gif .

Я просмотрел документацию GraphicsMagick , но не могу найти нигде, где упоминается возможность установить размер файла и иметь автоматически вычисленное сжатие .

Я рассматривал возможность сделать это программно с помощью тестового цикла compress-> save->, однако я могу представить, что это будет довольно интенсивно для процессора, поскольку я не могу обязательно рассчитать размер файла на сжатие заранее. Вот почему я прошу посмотреть, решена ли проблема в GraphicsMagick.

Редактировать

Чтобы прояснить, почему существуют внешние требования:

Пользователь будет использовать эту систему для создания плоского изображения, которое затем сохранит на своем ПК. Затем это изображение необходимо загрузить в Adroll для использования в кампании ретаргетинга.

Вот требования Adroll к изображению. Моя система будет предоставлять только изображения с размерами 728x90, 300x250 и 120x600.

Edit 27 ноября 2010 г.

Поскольку это не представляется возможным с GraphicsMagick, я готов изучить другие решения, например как прямое взаимодействие с библиотеками сжатия (libpng и т. д.), которые могут обеспечивать эту функциональность.

В крайнем случае, я могу даже посмотреть на алгоритмы, которые могут это сделать, и реализовать один самостоятельно.


Поскольку аналогия, для тех, кто склонен к этому:

Я ищу то, что A * должен искать: он имеет определенную начальную / конечную точку и находит наилучший возможный маршрут в кратчайшие сроки.

Чего я надеялся избежать было тем, чем является ширина / глубина поиска для поиска: определенные начальные / конечные точки, но они могут не достичь оптимального решения после нахождения локального минимума и могут полностью потерять вычислительные ресурсы.

23
задан Jess Telford 27 November 2010 в 00:09
поделиться