有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使位图变亮或变暗

比如说,如何获取现有位图

Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.somebitmap);

然后写一个方法,返回位图的变暗版本

private Bitmap darkenBitMap(Bitmap bm) { }

我一直在尝试使用颜料和画布,但到目前为止还没有结果


共 (2) 个答案

  1. # 1 楼答案

    使视野更暗

    canvas.drawARGB(200, 0, 0, 0);

    简而言之:)

  2. # 2 楼答案

    下面是一个在每个像素上迭代的示例

    /**
     * @param bitmap a mutable bitmap instance.
     */
    private void darkenBitmap(Bitmap bitmap) {
        int height = bitmap.getHeight();
        int width = bitmap.getWidth();
        int pixel;
    
        // Iterate over each row (y-axis)
        for (int y = 0; y < height; y++) {
            // and each column (x-axis) on that row
            for (int x = 0; x < width; x++) {
                pixel = bitmap.getPixel(x, y);
    
                // TODO: Modify your pixel here. For samples, http://stackoverflow.com/questions/4928772/android-color-darker
    
                bitmap.setPixel(x, y, pixel);
            }
        }
    }
    

    该方法需要可变位图,因此可能需要使用BitmapFactory选项加载位图。e、 g

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inMutable = true;
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.somebitmap, options);
    

    您还可以在该方法中创建一个新的可变位图,称为setPixel(…)然后把它还给我。但是,我强烈建议尽可能避免这种内存分配