Java 如何在Android上加载原始位图而不进行缩放?

Java 如何在Android上加载原始位图而不进行缩放?,java,android,bitmap,Java,Android,Bitmap,我有一个位图文件,用作视图的遮罩。它在白色背景上有多个不同颜色的矩形区域。当用户触摸视图时,我使用此事件的X和Y坐标查找遮罩的颜色(未显示),并根据返回的颜色代码执行操作 问题是:使用BitmapFactory加载此掩码会导致位图对象被缩放。这样,颜色会有点失真。例如,如果我有一个带有颜色(1551550)的实心矩形,那么它会像(1481580),(1501540),等等。但我需要得到确切的颜色 那么,如何加载原始位图,而不进行任何缩放/压缩之类的操作呢?我做了类似的操作,使用了一个存储在R.r

我有一个位图文件,用作视图的遮罩。它在白色背景上有多个不同颜色的矩形区域。当用户触摸视图时,我使用此事件的X和Y坐标查找遮罩的颜色(未显示),并根据返回的颜色代码执行操作

问题是:使用BitmapFactory加载此掩码会导致位图对象被缩放。这样,颜色会有点失真。例如,如果我有一个带有颜色(1551550)的实心矩形,那么它会像(1481580),(1501540),等等。但我需要得到确切的颜色


那么,如何加载原始位图,而不进行任何缩放/压缩之类的操作呢?

我做了类似的操作,使用了一个存储在R.raw中的png文件。用户点击一个图像,触发后面彩色图像的onTouch事件

public static Bitmap loadBitmapFromView(View v)
{
    Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
    v.draw(c);
    return b;
}

@Override
public boolean onTouch(View v, MotionEvent event)
{
    Bitmap b = loadBitmapFromView(v);
    long color = b.getPixel((int)event.getX(), (int)event.getY());
    //check what the color is, act accordingly 
}

我做了类似的事情,使用了一个png文件,它存储在R.raw中。用户点击一个图像,触发后面彩色图像的onTouch事件

public static Bitmap loadBitmapFromView(View v)
{
    Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
    v.draw(c);
    return b;
}

@Override
public boolean onTouch(View v, MotionEvent event)
{
    Bitmap b = loadBitmapFromView(v);
    long color = b.getPixel((int)event.getX(), (int)event.getY());
    //check what the color is, act accordingly 
}