android - Bitmap.getPixel crashes program -
i working on bitmap collisions in android studio (detecting when 2 images collide, not 2 rects) , wrote following method. first part of code-all of if statements- determine position of 2 intersecting rectangles , create rectangle made of overlap between intersecting rectangles. second part of code tries iterate through each pixel in newly created rectangle , determine whether transparent or not. however, in order this, use pic1.getpixel (pic1 , pic2 2 bitmaps valid images in them) program crashes every time try use getpixel. checked make sure first part of code works correctly , does. why happening?
public boolean iscollision(rect r1, rect r2 ) { if(r1.intersect(r2)) { rect r3 = new rect(0,0,0,0); if (r2.left < r1.right && r2.top < r1.bottom && r2.right > r1.right && r2.bottom > r1.bottom) { r3.set(r2.left, r2.top, r1.right, r1.bottom); } else if (r2.right > r1.left && r2.top < r1.bottom && r2.left < r1.left && r2.bottom > r1.bottom) { r3.set(r1.left, r2.top, r2.right, r1.bottom); } else if (r2.left < r1.right && r2.bottom > r1.top) { r3.set(r2.left, r1.top, r1.right, r2.bottom); } else if(r2.right > r1.left && r2.bottom > r1.top) { r3.set(r1.left, r1.top, r2.right, r2.bottom); } log.v("debugging", "made part overlapping rectangle creation"); (int = r3.left; i<r3.right; i++) { (int j = r3.top; j < r3.bottom; j++) { /*log.v("debugging","pixel 1: " + integer.tostring(pic1.getpixel(i,j))); log.v("debugging","pixel 2: " + integer.tostring(pic2.getpixel(i,j))); log.v("debugging","transparent color: " + integer.tostring(color.transparent));*/ if (pic1.getpixel(i,j) != color.transparent) { if (pic2.getpixel(i,j) != color.transparent) { return true; } } } } log.v("debugging", "made past pixel search"); } return false; }
i figured out, turns out x , y values, using position of pixel based on coordinate system of screen. however, getpixel, 0,0 point in upper right hand corner of image trying pixels for. therefore,the problem solved when did getpixel(i-rect.left,j-rect.top)
Comments
Post a Comment