让我解释一下我正在尝试做什么,我正在使用PHP构建一个命令行工具,它使用这些程序来优化网络图像......
imagemagick
确定文件类型并将非动画gif转换为png
gifsicle
优化动画Gif图像
jpegtran
优化jpg图片
pngcrush
优化png图像
pngquant
将png图像优化为png8格式
pngout
将png图像优化为png8格式
这是一个非常繁重的过程,幸运的是它很少进行,但我仍然希望尽可能地优化。
目前处理大约12张图片需要大约76秒。所以你可以看到它是一个缓慢的过程,想象100张图像。
我真的想以某种方式将图像标记为优化,所以当我加载一批图像时,它首先要做的是通过ImageMagick来获取确切的文件类型,如果我能以某种方式可能会很好嵌入一条消息,说明这张图片已经尽可能地优化了,然后当我正在读取图像时,如果它检测到一条消息,它将知道不会浪费宝贵的时间通过所有其他程序运行该特定图像,如果这是可能的,它可以大大提高速度。
请帮助我,我不习惯使用这样的图像,这是否可能,如果它是什么叫它,我怎么能实现它?
感谢您的帮助
答案 0 :(得分:2)
如果您要在图像中包含一个标志,那么这将被提供给客户端。它会增加图像的文件大小,从而抵消了一些优化。
将目录保存在同一目录中的文件中 - 与Windows Thumbs.db
文件非常相似。
另一种选择是将记录保存在数据库或数据存储区中,例如Redis或Memcached。
处理后,您可以将文件移动到其他目录(如@Jordan提及的那样)。
另一种选择是在文件名上追加一个额外的“扩展名”,例如:
my_image.processed.jpg
通常这用于尝试隐藏图像中的隐蔽数据,并将其称为Steganography。但是,它并不适合这种用例。
您可以将其写入图片的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