我正在构建一个 PHP 系统,用户可以创建一个视觉复杂的图像,最终要求为50kB 或更少。
用户可以选择将文本打印到 37 个模板图像之一上,因此结果是单个平面图像。
文本可以是任何颜色和多种字体中的一种。这意味着最终图像在视觉上可能非常复杂且不可预测(图像尺寸除外)。
然后我要求最终图像文件大小不大于 50kB(这是外部要求,无法更改)。
最后一个要求(同样是外部的)是图像格式必须是.jpeg、.png 或 .gif。
我查看了GraphicsMagick文档,但找不到任何提到能够设置文件大小并自动计算压缩的地方。
我考虑过通过 compress->save->test 循环以编程方式执行此操作,但是我可以想象这将是处理器密集型的,因为我不一定能提前根据压缩计算文件大小。这就是为什么我要求查看问题是否已经在 GraphicsMagick 中解决。
编辑
要清楚为什么有外部要求:
用户将利用该系统创建平面图像,然后将其保存到他们的 PC 上。然后将此图像上传到Adroll以用于重新定位广告系列。
这是Adroll对图像的要求。我的系统将只提供 728x90、300x250 和 120x600 的图像尺寸。
编辑2010 年 11 月 27 日
由于 GraphicsMagick 似乎无法做到这一点,因此我愿意研究其他解决方案,例如直接与能够提供该功能的压缩库(libpng 等)接口。
作为最后的手段,我什至可以看看可以实现这一点的算法并自己实现一个。
打个比方,对于那些有这种倾向的人:
我追求的是 A* 的搜索:它有一个明确的起点/终点,并在最快的时间内找到最好的可能路线。
我希望避免的是广度/深度优先是搜索:确定的起点/终点,但一旦找到局部最小值就可能无法达到最佳解决方案,并且有可能在计算上完全崩溃。