【发布时间】:2018-12-30 16:20:42
【问题描述】:
我正在尝试更改位图图像中某些像素的颜色。当我从我的可绘制文件夹中更改位图图像数组中的像素颜色时,它会在不同颜色周围留下一个黑色边框,这是不需要的。没有黑色边框怎么办?
我尝试了下面的方法,它留下了黑色边框:
bitmap = bitmap_.copy(bitmap_.getConfig(), true);
int[] pixels = new int[bitmap.getHeight() * bitmap.getWidth()];
bitmap.getPixels(pixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
for(int i = 0; i < pixels.length; i++) {
if(pixels[i] == Color.rgb(120, 120, 120)) {
pixels[i] = Color.RED;
} else
if(pixels[i] == Color.rgb(90, 90, 90)) {
pixels[i] = Color.GREEN;
} else
if(pixels[i] == Color.rgb(60, 60, 60)) {
pixels[i] = Color.RED;
} else
if(pixels[i] == Color.rgb(30, 30, 30)) {
pixels[i] = Color.GREEN;
} else
if(pixels[i] == Color.rgb(0, 0, 0)) {
pixels[i] = Color.RED;
} else {
pixels[i] = Color.YELLOW; // Should never fire
}
}
bitmap.setPixels(pixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
输出中不应有黄色像素,因为图像仅包含 0,0,0 或 30 到 120 的倍数的像素。保存时它不应该是抗锯齿的。但是,如您所见,有黄色像素。或者如果我不给它们重新着色,它们就会变黑。
【问题讨论】:
-
可以分享截图吗?
-
现在添加,最初没有正确添加
-
如何确定没有抗锯齿功能?
-
调试程序,打印不符合条件的像素。听起来您的假设很有可能是错误的。
-
它只输出一个整数,不知道它与像素颜色有何关系。但是它在保存时没有抗锯齿,看起来好像android系统在加载时正在这样做。