【问题标题】:How to load a raw bitmap, without scaling on Android?如何加载原始位图,而不在 Android 上缩放?
【发布时间】:2010-10-20 10:53:22
【问题描述】:

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

问题是:使用 BitmapFactory 加载此遮罩会导致 Bitmap 对象被缩放。这样颜色会有点失真。如果我有例如一个颜色为 (155, 155, 0) 的实心矩形,然后它会像 (148, 158, 0)、(150, 154, 0) 等等。但我需要得到准确的颜色。

那么我如何加载原始位图,而不需要任何缩放/压缩/类似的东西?

【问题讨论】:

    标签: java android bitmap


    【解决方案1】:

    我做了类似的事情,使用存储在 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 
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      相关资源
      最近更新 更多