【问题标题】:Android bitmap tint, getPixel errorAndroid位图色调,getPixel错误
【发布时间】:2015-02-24 22:30:08
【问题描述】:

所以,我想要做的是,如果我点击按钮,它会将同一屏幕上的图像染成橙色 (70%)。

    Button OrangeButton= (Button) findViewById(R.id.OButton);
    OrangeButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            imageCapture = (ImageView) findViewById(R.id.imageCapture);
            BitmapDrawable drawable = (BitmapDrawable) imageCapture
                    .getDrawable();
            final Bitmap imgbitmap = drawable.getBitmap();
            // convert bitmap to hokie tint
            Bitmap imgnew;
            imgnew = toOrange(imgbitmap);

            // convert bitmap to imageview
            imageCapture.setImageBitmap(imgnew);
        }
    });

}

这是我的橙色方法。

public Bitmap toOrange(Bitmap bmpOriginal) {
    int width, height;
    height = bmpOriginal.getHeight();
    width = bmpOriginal.getWidth();
    int orangeFilter = new Color().rgb(255, 165, 0);
    int maroonFilter = new Color().rgb(115, 24, 44);
    for (int j = 0; j < height - 1; j++) {
        for (int i = 0; i < width - 1; i++) {

我很确定我在这里遇到了问题。

        int newColor = (int) (bmpOriginal.getPixel(i, j) * 0.7 + orangeFilter
                * 0.3);
        bmpOriginal.setPixel(i, j, newColor);
            }

    }
    return bmpOriginal;
}

我在这个 lob 之外尝试了 bmpOriginal.setPixel(5, 5, Color.Red) ,但它也出错了。所以我知道 setPixel 不起作用。我该如何解决这个问题?

【问题讨论】:

    标签: android colors bitmap pixel getpixel


    【解决方案1】:

    由于您没有发布究竟是什么错误,我假设位图是不可变的,这意味着您无法更改它。您可以尝试制作它的可变副本,请参阅http://developer.android.com/reference/android/graphics/Bitmap.html

    一种更简单的方法是对您的ImageView 应用颜色过滤器,如下所示:

    imageCapture.setColorFilter(Color.rgb(255, 165, 0));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 2015-09-06
      • 2021-10-01
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多