有没有办法将一些数据设置为图像

时间:2012-01-12 09:07:11

标签: php image-processing

让我解释一下我正在尝试做什么,我正在使用PHP构建一个命令行工具,它使用这些程序来优化网络图像......

imagemagick确定文件类型并将非动画gif转换为png
gifsicle优化动画Gif图像
jpegtran优化jpg图片
pngcrush优化png图像
pngquant将png图像优化为png8格式
pngout将png图像优化为png8格式

这是一个非常繁重的过程,幸运的是它很少进行,但我仍然希望尽可能地优化。

目前处理大约12张图片需要大约76秒。所以你可以看到它是一个缓慢的过程,想象100张图像。

我真的想以某种方式将图像标记为优化,所以当我加载一批图像时,它首先要做的是通过ImageMagick来获取确切的文件类型,如果我能以某种方式可能会很好嵌入一​​条消息,说明这张图片已经尽可能地优化了,然后当我正在读取图像时,如果它检测到一条消息,它将知道不会浪费宝贵的时间通过所有其他程序运行该特定图像,如果这是可能的,它可以大大提高速度。

请帮助我,我不习惯使用这样的图像,这是否可能,如果它是什么叫它,我怎么能实现它?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

如果您要在图像中包含一个标志,那么这将被提供给客户端。它会增加图像的文件大小,从而抵消了一些优化。

建议

保留状态参考

将目录保存在同一目录中的文件中 - 与Windows Thumbs.db文件非常相似。

另一种选择是将记录保存在数据库或数据存储区中,例如RedisMemcached

处理后移动

处理后,您可以将文件移动到其他目录(如@Jordan提及的那样)。

更改文件名以指示其已处理

另一种选择是在文件名上追加一个额外的“扩展名”,例如:

my_image.processed.jpg

在图像中嵌入数据

隐写

通常这用于尝试隐藏图像中的隐蔽数据,并将其称为Steganography。但是,它并不适合这种用例。

EXIF数据

您可以将其写入图片的EXIF数据,但据我所知,这将是仅JPEG和TIFF 。编写和读取EXIF数据有PHP library available called PEL

答案 1 :(得分:0)

您可以使用Comment字段将图片标记为已经过优化,如下所示:

convert x.jpg -set comment "Optimised" x.jpg

然后,在处理时,您可以像这样提取它:

identify -format "%c" x.jpg
Optimised