Imagemagick 优化图像一次,避免再次优化

Imagemagick 优化图像一次,避免再次优化,imagemagick,compression,jpeg,Imagemagick,Compression,Jpeg,我有大量的图像,主要是JPEG,我想使用ImageMagick之类的库或jpegtran之类的Linux CLI工具(如中所述)对其进行优化,但我不想跟踪哪些图像已经过优化,也不想以后再对每个图像进行重新优化。是否有某种我可以轻松添加到文件中的标志,使其易于检测和跳过优化?最好是在备份到其他文件系统时保留该文件的文件 例如:一小段exif数据、一个文件系统标志、在文件末尾添加的一些无害的空字节、一个已经足够智能的工具,等等。您可以使用“扩展属性”,它们是元数据并存储在文件系统中。用xattr读写

我有大量的图像,主要是JPEG,我想使用ImageMagick之类的库或jpegtran之类的Linux CLI工具(如中所述)对其进行优化,但我不想跟踪哪些图像已经过优化,也不想以后再对每个图像进行重新优化。是否有某种我可以轻松添加到文件中的标志,使其易于检测和跳过优化?最好是在备份到其他文件系统时保留该文件的文件

例如:一小段exif数据、一个文件系统标志、在文件末尾添加的一些无害的空字节、一个已经足够智能的工具,等等。

您可以使用“扩展属性”,它们是元数据并存储在文件系统中。用
xattr
读写它们:

# Read existing attributes
xattr -l image.png

# Set an optimised flag of your own invention/description
xattr -w optimised true image.png

# Read attributes again
xattr -l image.png
optimised: true
可以在长列表中检测到扩展属性的存在-它是权限后的
@
符号:

-rw-r--r--@ 1 mark  staff  275 29 May 07:54 image.png
正如您在评论中所提到的,在将其作为一种策略提交之前,请确保您使用的任何备份程序都尊重这些属性。FAT-32文件系统在这方面是出了名的差劲——尽管
tar
file或类似的文件可能在往返于Windows的旅途中幸存下来

作为替代,只需在EXIF标题中设置一条注释-我已经在相关答案中介绍了这一点

您可以使用“扩展属性”,它们是元数据并存储在文件系统中。用
xattr
读写它们:

# Read existing attributes
xattr -l image.png

# Set an optimised flag of your own invention/description
xattr -w optimised true image.png

# Read attributes again
xattr -l image.png
optimised: true
可以在长列表中检测到扩展属性的存在-它是权限后的
@
符号:

-rw-r--r--@ 1 mark  staff  275 29 May 07:54 image.png
正如您在评论中所提到的,在将其作为一种策略提交之前,请确保您使用的任何备份程序都尊重这些属性。FAT-32文件系统在这方面是出了名的差劲——尽管
tar
file或类似的文件可能在往返于Windows的旅途中幸存下来


作为替代,只需在EXIF标题中设置一条注释-我已经在相关答案中介绍了这一点

根据Mark Setchell的回答,如果使用xattr,则很可能需要使用,否则可能会出现“不支持操作”错误。我能找到的大多数文档都提到“setfattr”,然而,同样的受信任名称空间规则也适用于“xattr”

例如,使用用户名称空间:

# Set an optimised flag of your own invention/description
xattr -w user.optimised true image.png

根据Mark Setchell的答案,如果使用xattr,则很可能需要使用,否则可能会出现“不支持操作”错误。我能找到的大多数文档都提到“setfattr”,然而,同样的受信任名称空间规则也适用于“xattr”

例如,使用用户名称空间:

# Set an optimised flag of your own invention/description
xattr -w user.optimised true image.png

在Imagemagick中,可以向图像添加注释`转换图像-设置注释“优化”图像。但即使这样做,如果您再次保存为jpg,也会改变图像,因为每次读取和写入图像时都会进行有损压缩。您可能不需要使用EXIFTOOL和其他一些优化工具(如jpegtran)来读写图像数据,就可以做您想做的事情。谢谢,进一步阅读EXIFTOOL,我确实看到它支持为PNG图像和JPG读写图像数据,因此这可能是未来最经得起考验的解决方案,使用exif作为“已压缩”标志的存储介质。在Imagemagick中,可以向图像添加注释`转换图像-设置注释“优化”图像。但即使这样做,如果您再次保存为jpg,也会改变图像,因为每次读取和写入图像时都会进行有损压缩。您可能不需要使用EXIFTOOL和其他一些优化工具(如jpegtran)来读写图像数据,就可以做您想做的事情。谢谢,进一步阅读EXIFTOOL,我确实看到它支持为PNG图像和JPG读写图像数据,因此这可能是未来最经得起考验的解决方案,使用exif作为“已压缩”标志的存储介质。谢谢!我使用了exiftool,但如果我已经知道xattr,我可能会使用它。谢谢!我使用了exiftool,但如果我已经知道xattr,我可能会使用它。