在ImageView上调整色温

时间:2014-01-31 12:35:36

标签: android image-processing colormatrix

我成功实现了通过来自用户的SeekBars选择的值调整ImageView的对比度和/或亮度的功能。对于对比度,它看起来像(亮度相似):

// Contrast
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.set(new float[] {
        scale, 0, 0, 0, translate,   // Red
        0, scale, 0, 0, translate,   // Green
        0, 0, scale, 0, translate,   // Blue
        0, 0, 0, 1, 0 });            // Alpha

imageView.setColorFilter(new ColorMatrixColorFilter(colorMatrix);

所以我只需通过缩放(乘法)或将RGB值翻译(加法)到另一个值来调整对比度和/或亮度。

如何(使用矩阵)调整图像的色温?

2 个答案:

答案 0 :(得分:3)

我刚为我的应用程序创建了这样一个矩阵来调整色温。

ColorMatrix colorMatrix = new ColorMatrix();

colorMatrix.set(new float[] {
RED/255.0f, 0, 0, 0, 0,
0, GREEN/255.0f, 0, 0, 0
0, 0, BLUE/255.0f, 0, 0,
0, 0, 0, 1, 0}); 
imageView.setColorFilter(new ColorMatrixColorFilter(colorMatrix);

您可以从此处获取RED,GREEN和BLUE的值: http://www.vendian.org/mncharity/dir3/blackbody/UnstableURLs/bbr_color.html

它的工作非常精细,甚至可以相应调整具有非常强烈色温的图像:)

答案 1 :(得分:0)

我跟着命运回答,但不得不做一些调整,以下是我的做法:

let amount = 255;
let value  = 0;

(1.0000* amount)/255.0, 0, 0, 0, 0,
0, ((1.0000+value)* amount)/255.0, 0, 0, 0,
0, 0, ((1.0000+value)* amount)/255.0, 0, 0,
0, 0, 0, 1, 0