繁体   English   中英

获取包含Java中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();

然后我用颜色填充图像的一部分,使用几个调用fillPolygondrawImage等(注意我的一些颜色的alpha小于255.)

我的问题是,如何构造一个仅包含BufferedImage绘制的区域的Area对象? 通过阅读API文档,我相信它可以通过检查getAlphaRaster方法返回的Raster来完成,但我希望有一种更简单(也更快)的方法。

..我可以构造一个Area对象,它只包含在BufferedImage绘制的区域吗?

在此源中看到的getOutline(..)方法可用于区分图像的不透明和半透明部分。 话虽如此,该方法仅检查该像素的目标颜色和图像颜色之间的“精确匹配”。 你需要调整它来检查alpha <255。

ShapeContainment类将用于确定某个点是否属于多个Area实例中的任何一个。

OneRingShapeCollision可以看到其他使用Java-2D和图像的ShapeCollision

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM