我的Android应用程序中加载了一个图像,用户可以选择该图像的特定区域。我想在用户选择的特定区域中
private int[] ChannelRed(Bitmap mBitmap)
{
int picw, pich;
picw = mBitmap.getWidth();
pich = mBitmap.getHeight();
int[] pix = new int[picw * pich];
mBitmap.getPixels(pix, 0, picw, 0, 0, picw, pich);
for (int y = 0; y < pich; y++)
for (int x = 0; x < picw; x++)
{
int index = y * picw + x;
int r = (pix[index] >> 16) & 0xff;
pix[index] = 0xff000000 | (r << 16) | (0 << 8) | 0;
}
return pix;
}
答案 0 :(得分:0)
此代码可帮助您了解该区域的工作。
Point2D p1 = null;
Point2D p2 = null;
@Override
public boolean onTouchEvent(MotionEvent event) {
pointX = event.getX();
pointY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
p1 = new Point2D(pointX, pointY);
return true;
case MotionEvent.ACTION_UP:
p2 = new Point2D(pointX, pointY);
postInvalidate();
break;
default:
return false;
}
return true;
}
private int[] ChannelRed(Bitmap mBitmap)
{
int picw, pich;
int sx = p1.getX();
int sy = p1.getY();
int fx = p2.getX();
int fy = p2.getY();
picw = mBitmap.getWidth();
pich = mBitmap.getHeight();
int[] pix = new int[picw * pich];
mBitmap.getPixels(pix, 0, picw, 0, 0, picw, pich);
for (int y = sy; y < fy; y++)
for (int x = sx; x < fx; x++)
{
int index = y * picw + x;
int r = (pix[index] >> 16) & 0xff;
pix[index] = 0xff000000 | (r << 16) | (0 << 8) | 0;
}
p1=null;
p2=null;
return pix;
}