[英]Drawing a transparent BufferedImage over a non-transparent BufferedImage
[英]Get an Area containing the non-transparent pixels in a BufferedImage in Java
在Java SE 7中,我創建了一個BufferedImage
對象:
BufferedImage i = new BufferedImage(300, 300, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = i.createGraphics();
然后我用顏色填充圖像的一部分,使用幾個調用fillPolygon
, drawImage
等(注意我的一些顏色的alpha小於255.)
我的問題是,如何構造一個僅包含BufferedImage
繪制的區域的Area
對象? 通過閱讀API文檔,我相信它可以通過檢查getAlphaRaster
方法返回的Raster
來完成,但我希望有一種更簡單(也更快)的方法。
..我可以構造一個
Area
對象,它只包含在BufferedImage
繪制的區域嗎?
在此源中看到的getOutline(..)
方法可用於區分圖像的不透明和半透明部分。 話雖如此,該方法僅檢查該像素的目標顏色和圖像顏色之間的“精確匹配”。 你需要調整它來檢查alpha <255。
ShapeContainment
類將用於確定某個點是否屬於多個Area
實例中的任何一個。
在OneRing
和ShapeCollision
可以看到其他使用Java-2D和圖像的ShapeCollision
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.