【问题标题】:Is there a way to set some data into an image有没有办法将一些数据设置为图像
【发布时间】:2014-08-06 00:25:05
【问题描述】:

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

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

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

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

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

请帮帮我,我不习惯处理这样的图像,这是否可能,如果它是所谓的,我该如何实现?

感谢您的帮助

【问题讨论】:

  • 处理完文件后为什么不把它们移到另一个目录?

标签: php image-processing


【解决方案1】:

如果您要在图像本身中包含一个标志,那么它将提供给客户。它会增加图像的文件大小,从而否定您的一些优化。

建议

保留状态参考

将目录保存在同一目录中的文件中 - 很像 Windows Thumbs.db 文件。

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

处理后移动

处理完文件后,您可以将文件移动到不同的目录(正如@Jordan 提到的那样)。

更改文件名以表明它已被处理

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

my_image.processed.jpg

在图像中嵌入数据

隐写术

这通常用于尝试隐藏图像中的隐蔽数据,它被称为Steganography。然而,它并不真正适合这个用例。

EXIF 数据

您可以将其写入图像的 EXIF 数据中,但据我所知,这将是仅限 JPEG 和 TIFF。有一个PHP library available called PEL用于读写EXIF数据。

【讨论】:

    【解决方案2】:

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

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

    然后,当你在处理的时候,你可以像这样提取它:

    identify -format "%c" x.jpg
    Optimised
    

    【讨论】:

      猜你喜欢
      • 2013-06-10
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      相关资源
      最近更新 更多