我正在尝试改变位图中某些像素的颜色。当我从我的可绘制文件夹中更改位图图像数组中的像素颜色时,它会在不同颜色周围留下黑色边框,这是不需要的。如果没有黑色边框,我该怎么做?
我已经尝试了下面的方法,它留下了黑色边框:
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 的像素组成。保存时不应该抗锯齿。然而,正如您所看到的,有黄色像素。或者,如果我不给它们重新着色,它们就会变黑。
最佳答案
将位图放入 drawable-nodpi 文件夹可防止 Android 在运行时放大它们,这会导致抗锯齿。
关于java - setPixel 在位图周围留下黑色边框,如何避免?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53979298/