0
我需要从PNG图像中提取像素完美区域以检测碰撞。我发现下面的代码是一个解决办法:从PNG图像的不透明像素创建区域
public static Region create(Image image) {
Region region = new Region();
for (int i = 0; i < image.getWidth(); i++) {
for (int j = 0; j < image.getHeight(); j++) {
if (Color.alpha(image.getRGB(i, j)) == 255) {
region.op(new Rect(i, j, 1, 1), Region.Op.UNION);
}
}
}
return region;
}
以下是图片类的实现:
public class AndroidImage implements Image {
Bitmap bitmap;
ImageFormat format;
public AndroidImage(Bitmap bitmap, ImageFormat format) {
this.bitmap = bitmap;
this.format = format;
}
@Override
public int getWidth() {
return bitmap.getWidth();
}
@Override
public int getHeight() {
return bitmap.getHeight();
}
@Override
public int getRGB(int x, int y) {
return bitmap.getPixel(x, y);
}
@Override
public ImageFormat getFormat() {
return format;
}
@Override
public void dispose() {
bitmap.recycle();
}
}
碰撞检测不工作;当我从调用的方法.isEmpty()
返回区域,它返回true。任何想法为什么?
了解如何构建Rect对象 – pskink