使用 Colormatrix 的白线错误
White line bug using Colormatrix
所以我有一个大问题。我多年来无法解决它所以请任何可以提供帮助的人 - 这将是惊人的。
所以问题出在 ColorMatrix 上。正如你在图片中看到的那样,当我在照片上添加效果并将其保存到我的内存中时,我得到了那种左边有一条小白线的图片。有趣的是,当我将对比度增加到例如 7 时,这条线变得越来越大。所以我猜问题出在对比度和亮度上。无论如何,它工作得很好,而且我对其他任何东西都很满意……我猜只有这个错误有一天会杀了我。有什么帮助吗?
我的代码:
public void effect(View view) {
float contrast = 1;
float brightness = 0;
Bitmap.Config config = bmp.getConfig();
if (config == null) {
config = Bitmap.Config.ARGB_8888;
}
operation = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), config);
ColorMatrix cm = new ColorMatrix(new float[]
{
contrast, 0, 0, 0, brightness,
0, contrast, 0, 0, brightness,
0, 0, contrast, 0, brightness,
0, 0, 0, 1, 0,
0, 0, 0, 0, 1
});
Canvas canvas = new Canvas(operation);
Paint paint = new Paint();
paint.setColorFilter(new ColorMatrixColorFilter(cm));
canvas.drawBitmap(bmp, contrast, brightness, paint);
imageview.setImageBitmap(operation);
}
IMAGE OF BUG. The white line in the left
愿意为此提供帮助的任何人。谢谢你!
所以我想 post 我的问题的答案。
我太笨了..- x 和 y 必须是 0 0 而不是写对比度和亮度。
求解线:
canvas.drawBitmap(bmp, 0, 0, paint);
所以我有一个大问题。我多年来无法解决它所以请任何可以提供帮助的人 - 这将是惊人的。 所以问题出在 ColorMatrix 上。正如你在图片中看到的那样,当我在照片上添加效果并将其保存到我的内存中时,我得到了那种左边有一条小白线的图片。有趣的是,当我将对比度增加到例如 7 时,这条线变得越来越大。所以我猜问题出在对比度和亮度上。无论如何,它工作得很好,而且我对其他任何东西都很满意……我猜只有这个错误有一天会杀了我。有什么帮助吗? 我的代码:
public void effect(View view) {
float contrast = 1;
float brightness = 0;
Bitmap.Config config = bmp.getConfig();
if (config == null) {
config = Bitmap.Config.ARGB_8888;
}
operation = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), config);
ColorMatrix cm = new ColorMatrix(new float[]
{
contrast, 0, 0, 0, brightness,
0, contrast, 0, 0, brightness,
0, 0, contrast, 0, brightness,
0, 0, 0, 1, 0,
0, 0, 0, 0, 1
});
Canvas canvas = new Canvas(operation);
Paint paint = new Paint();
paint.setColorFilter(new ColorMatrixColorFilter(cm));
canvas.drawBitmap(bmp, contrast, brightness, paint);
imageview.setImageBitmap(operation);
}
IMAGE OF BUG. The white line in the left
愿意为此提供帮助的任何人。谢谢你!
所以我想 post 我的问题的答案。 我太笨了..- x 和 y 必须是 0 0 而不是写对比度和亮度。
求解线:
canvas.drawBitmap(bmp, 0, 0, paint);