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