我成功实现了通过来自用户的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值翻译(加法)到另一个值来调整对比度和/或亮度。
如何(使用矩阵)调整图像的色温?
答案 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