ImageMagick 在 Windows 和 Linux 上制作不同的图像

发布于 2024-11-16 00:22:36 字数 330 浏览 1 评论 0原文

我需要一个批处理过程来制作移动图像,并决定使用 ImageMagick,但不幸的是,我的要求之一是生成的图像在不同操作系统之间是相同的,因为我在本地系统 (Windows) 和操作系统之间来回发送它们。服务器(Linux)。然而,每当我调用该进程时,似乎

convert test.jpg -resize 25% test-small.jpg

都会在两台机器上创建不同的图像。我知道这一点是因为当我使用校验和时,值并不完全相同。

有谁知道为什么会发生这种情况?也许可以通过某种方式解决它,或者通过使用不同的可执行文件,或者传递一个参数来跨操作系统生成相同的图像?

I need a batch process for making mobile images and decided to use ImageMagick, but unfortunately one of my requirements is that the images produced are the same across OS's, since I'm sending them back and forth between my local system (Windows) and the server (Linux). It seems however whenever I call

convert test.jpg -resize 25% test-small.jpg

the process creates different images on both machines. I know this because when I use checksum the values aren't exactly the same.

Does anyone know of any reason why this would happen? And maybe some way around it, either via using a different executable or passing in a parameter that would produce the same images across OS's?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

秋风の叶未落 2024-11-23 00:22:36
  1. 文件中包含的不仅仅是像素——如果您要比较图像,请编写仅适用于解码的像素数据的校验和。这至少会告诉您图像看起来是否相同。由于很多因素,文件的内部结构可能会有所不同。

  2. 调整大小取决于浮点运算,您不能指望它在不同的机器上是相同的。因此,您可能希望查看每个像素是否在另一个文件中的关联像素的容差范围内,而不是仅使用校验和。

看一下这些链接:

  1. The files have more than the pixels in them -- If you are going to compare the images, write a checksum that works on just the decoded pixel data. That will at least tell you if the images would look the same. The internals of the file could be different because of a lot of factors.

  2. Resizing is dependent on float arithmetic and you can't count on that to be the same across machines. So instead of using just a checksum, you might want to see if each pixel is within a tolerance from the associated one in the other file.

Take a look at these links:

讽刺将军 2024-11-23 00:22:36

JPEG 算法是不确定的。无法确保在两个系统上生成相同的映像,甚至在同一系统上的两次调用之间也无法生成相同的映像。

JPEG algorithms are non-deterministic. There is no way to ensure that the same image will be generated across two systems, or even between two invocations on the same system.

寂寞美少年 2024-11-23 00:22:36

依靠“checksum”或“md5sum”或类似方法来比较两个图像并不是明智的选择。这只能验证文件是否确实相同。但是,如果您有不同的结果,这可能是由于某些随机元数据值中的一个字节不同(例如简单的时间戳)而引起的,而根本没有像素差异。

要发现两个图像之间的像素差异,您可以使用 ImageMagick 的 compare,如下所示:

compare  image1.jpg  image2.jpg  delta.jpg

对于彩色输入图像,生成的 delta.jpg 将使用 image1.jpb< /em> 作为浅灰色背景并以红色显示差异。要获得没有浅灰色背景的红+白增量图像,请使用

compare  image1.jpg  image2.jpg  -compose src  delta.jpg

此技术的示例图像可以在此处找到:

Relying on 'checksum' or 'md5sum' or similar to compare two images isn't a wise choice. This can only verify if the files are indeed identical. However, if you have different results, this could be caused by just one byte in some random meta data value being different (like a simple timestamp), while there's no pixel difference at all.

To discover the pixel differences between two images, you can use ImageMagick's compare like this:

compare  image1.jpg  image2.jpg  delta.jpg

For colored input images, the resulting delta.jpg willl use image1.jpb as a light-gray background and display the differences in red color. To get a red+white delta image without the light-gray background, use

compare  image1.jpg  image2.jpg  -compose src  delta.jpg

Examples images of this techniq can be found here:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文