簡體   English   中英

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

[英]ImageMagick making different images on Windows and Linux

我需要一個批處理來制作移動圖像,並決定使用ImageMagick,但不幸的是,我的一個要求是所生成的圖像在操作系統中是相同的,因為我在本地系統(Windows)和之間來回發送它們。服務器(Linux)。 然而,每當我打電話時,似乎

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

該過程在兩台機器上創建不同的圖像。 我知道這一點,因為當我使用校驗和時,值並不完全相同。

有誰知道為什么會發生這種情況? 也許某種方式,通過使用不同的可執行文件或傳入一個參數,可以在OS上產生相同的圖像?

JPEG算法是非確定性的。 無法確保在兩個系統之間生成相同的映像,甚至無法確保在同一系統上的兩個調用之間生成相同的映像。

  1. 文件中的像素數多於其中 - 如果要比較圖像,請編寫一個僅對解碼后的像素數據起作用的校驗和。 這至少會告訴你圖像是否看起來一樣。 由於很多因素,文件的內部可能會有所不同。

  2. 調整大小取決於浮點運算,您不能指望它在整個機器上是相同的。 因此,您可能希望查看每個像素是否在另一個文件中相關的像素的容差范圍內,而不是僅使用校驗和。

看看這些鏈接:

依靠'checksum'或'md5sum'或類似比較兩個圖像不是明智的選擇。 這只能驗證文件是否確實相同。 但是,如果您有不同的結果,這可能是由於某個隨機元數據值中的一個字節不同(如簡單的時間戳),而根本沒有像素差異。

要發現兩個圖像之間的像素差異,您可以像這樣使用ImageMagick的compare

compare  image1.jpg  image2.jpg  delta.jpg

對於彩色輸入圖像,生成的delta.jpg將使用image1.jpb作為淺灰色背景並顯示紅色差異。 要獲得沒有淺灰色背景的紅色+白色增量圖像,請使用

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

此技術的示例圖像可在此處找到:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM