[英]Resize png image in Delphi - incorrect alpha channel
我正在調整可能具有alpha通道的png圖像。
一切都很好,但有一個例外:我在透明區域周圍有一些灰色像素。
原始圖像沒有任何陰影。
有沒有辦法解決這個/解決它?
我正在使用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.