ImageMagick 範例 --
調整大小光暈錯誤 -- 已修正

索引
ImageMagick 範例前言與索引
已知和已修正錯誤索引
這是對調整大小濾鏡在對透明背景上的淺色圖像進行小幅調整大小時產生的「調整大小光暈錯誤」的演示。 應使用者要求,此錯誤已在 ImageMagick 6.2.4 版中完全修正。

此頁面供可能仍需處理此錯誤的舊版 IM 使用者參考。 此頁面上的範例在修正錯誤時(如果有的話)尚未重新建立。


調整大小光暈錯誤

我們在透明背景上有一個白色文字。 一切正常。

    magick -background none -fill white -pointsize 72 -font Candice \
            label:Hello   label.png
 
[IM Output]

但稍微調整大小會產生稍微暗的邊緣,儘管這在本頁較暗的背景上並不容易看到。

    magick -background none -fill white -pointsize 72 -font Candice \
            label:Hello  -resize 95%  resized.png
 
[IM Output]

要清楚地看到光暈,讓我們將白色文字圖像疊加在白色背景上,然後進行歸一化以顯示較暗的像素。

    magick -background none -fill white -pointsize 72 -font Candice \
            label:Hello  -resize 95% \
            -background white -flatten -normalize     resize_halo.jpg
 
[IM Output]

通過移除調整大小命令並進行疊加,產生預期的純白色圖像,我們可以看到這確實是一個調整大小錯誤。 純白色圖像應該是先前命令的結果。

    magick -background none -fill white -pointsize 72 -font Candice \
            label:Hello  \
            -background white -flatten -normalize      no_resize.jpg
 
[IM Output]


錯誤的非圖形測試

讓我們以不同的方式來看待這個問題......

執行命令......

    magick -background none -fill white -pointsize 72 -font Candice \
             label:Hello    txt:-  |\
      egrep -v '\) (white|none|#FFFFFFFFFFFF)'
 

egrep」將過濾掉「txt:」輸出中完全透明的黑色或白色、半透明的白色或完全不透明的白色像素。 這基本上留下了「txt:」註釋標題和任何半透明的灰色或黑色像素,它們形成了光暈。

在上述情況下,沒有半透明的灰色或黑色像素,因此只會產生單行命令標題。

但是,如果我們現在在輸出「txt:」圖像文件之前稍微調整圖像大小......

    magick -background none -fill white -pointsize 72 -font Candice \
            label:Hello   -resize 95%    txt:-  |\
      egrep -v '\) (white|none|#FFFFFFFFFFFF)'
 

您現在將看到許多、許多、許多半透明的灰色像素,這些像素不應該被產生!! 這些像素代表調整大小的圖像周圍的「黑色光暈」。


解決方法

上述問題是由於 調整大小濾鏡 不理解完全透明的顏色不應在像素的最終顏色中使用,而只能在透明度中使用。

這個問題與包含透明度的模糊是相同的問題,並在 模糊透明度錯誤 中進行了討論,解決這個問題的類似解決方案在這裡也適用。

一種適用於這兩種問題的解決方法是將透明度的顏色設置為與要調整大小的圖像的邊緣顏色相同。 也就是說,使用完全透明的白色(例如:「#FFFF」)作為背景,而不是完全透明的黑色(例如:「none」)。

    magick -background '#FFFF' -fill white -pointsize 72 -font Candice \
            label:Hello   -resize 95%  resized_white.png
 
[IM Output]

對於調整大小,您也可以嘗試使用「point」調整大小濾鏡關閉調整大小濾鏡。


    magick -background none -fill white -pointsize 72 -font Candice \
            label:Hello   -filter point  -resize 95%  resized_point.png
 
[IM Output]

這對於小幅調整大小非常有效,但在大量調整圖像大小時會失效。

    magick -background none -fill white -pointsize 1200 -font Candice \
            label:Hello   -filter point -resize 5%  resized_point_big.png
 
[IM Output]

如果您仔細觀察結果,您會發現圖像雖然沒有調整大小的光暈效果,但在邊緣也沒有抗鋸齒(也就是說,它有「鋸齒」)。 此外,在更詳細的圖像上,調整大小的圖像的內部細節實際上可能非常糟糕。 即使是很小的調整大小也會在圖像上產生摩爾紋。

將任何這些範例疊加在白色背景上(例如使用 -flatten)並進行 -normalizing 將不會顯示「光暈」效果。


建立時間:2005 年 5 月 3 日
更新時間:2005 年 8 月 10 日
作者:Anthony Thyssen,<Anthony.Thyssen@gmail.com>
使用以下工具生成的範例:[版本圖像]
網址:https://imagemagick.dev.org.tw/Usage/bugs/resize_halo/