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