簡體   English   中英

在Delphi中調整png圖像大小 - 不正確的Alpha通道

[英]Resize png image in Delphi - incorrect alpha channel

我正在調整可能具有alpha通道的png圖像。

一切都很好,但有一個例外:我在透明區域周圍有一些灰色像素。

原始圖像沒有任何陰影。

有沒有辦法解決這個/解決它?

錯誤的alpha值

我正在使用Gustavo Daud的SmoothResize(請參閱此問題的第一個答案),以調整png圖像的大小。

我無法提供我正在使用的代碼,因為我沒有寫它並且沒有作者的許可發布它。

我懷疑這是由兩件事引起的:PNG中的搞笑RGBA值和天真的大小調整代碼。

您需要檢查您的PNG內容。 您正在尋找透明區域中的RGB值。 盡管透明區域的Alpha為0,但它們仍然具有RGB信息。 在你的情況下,我希望透明區域充滿黑色RGB值。 如果天真地調整大小,那么在調整大小后可能會導致灰色輪廓。 示例:如果代碼將2個調整像素(0,0,0,0)和(255,255,255,255)調整為一個,會發生什么? 兩個像素貢獻50%。結果是128,128,128,128),這是半透明灰色。 當您通過例如x1.5升級時會發生同樣的事情,原始兩者之間的添加像素將是灰色的。 通常這種情況不會發生,因為圖像編輯軟件足夠智能,可以用最近的可見像素填充那些不可見的像素。

您可以嘗試通過填充白色(或圖像邊框上的其他顏色)的透明區域來“修復”PNG。

另一種方法是使用高級調整大小代碼 (寫入或查找庫),其將忽略透明像素RGB值(例如,通過從最接近的非透明像素獲取RGB)。

暫無
暫無

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

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