Я создаю систему PHP, с помощью которой пользователи могут создавать визуально сложное изображение, конечное требование которого - 50 КБ или меньше .
Пользователь может выбрать печать текста на одном из 37 шаблонов изображений, так что в результате получается одно плоское изображение.
Текст может быть любого цвета и иметь один из нескольких шрифтов. Это означает, что конечное изображение может быть визуально сложным и непредсказуемым (за исключением размеров изображения).
Затем у меня есть требование, чтобы размер файла окончательного изображения не превышал 50 КБ (это внешнее требование и не может быть изменено).
Последнее требование (опять же внешнее) - это формат изображения должен быть .jpeg, .png или .gif .
Я просмотрел документацию GraphicsMagick , но не могу найти нигде, где упоминается возможность установить размер файла и иметь автоматически вычисленное сжатие .
Я рассматривал возможность сделать это программно с помощью тестового цикла compress-> save->, однако я могу представить, что это будет довольно интенсивно для процессора, поскольку я не могу обязательно рассчитать размер файла на сжатие заранее. Вот почему я прошу посмотреть, решена ли проблема в GraphicsMagick.
Редактировать
Чтобы прояснить, почему существуют внешние требования:
Пользователь будет использовать эту систему для создания плоского изображения, которое затем сохранит на своем ПК. Затем это изображение необходимо загрузить в Adroll для использования в кампании ретаргетинга.
Вот требования Adroll к изображению. Моя система будет предоставлять только изображения с размерами 728x90, 300x250 и 120x600.
Edit 27 ноября 2010 г.
Поскольку это не представляется возможным с GraphicsMagick, я готов изучить другие решения, например как прямое взаимодействие с библиотеками сжатия (libpng и т. д.), которые могут обеспечивать эту функциональность.
В крайнем случае, я могу даже посмотреть на алгоритмы, которые могут это сделать, и реализовать один самостоятельно.
Поскольку аналогия, для тех, кто склонен к этому:
Я ищу то, что A * должен искать: он имеет определенную начальную / конечную точку и находит наилучший возможный маршрут в кратчайшие сроки.
Чего я надеялся избежать было тем, чем является ширина / глубина поиска для поиска: определенные начальные / конечные точки, но они могут не достичь оптимального решения после нахождения локального минимума и могут полностью потерять вычислительные ресурсы.