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