我有一个Android应用程序,可以将图像作为位图加载并在ImageView中显示。问题是图像看起来具有透明背景;这会导致图像上的一些黑色文本在黑色背景下消失。
如果我将ImageView背景设置为白色,那样有效,但是我在图像上得到了难看的大边框,它被拉伸以适合父级(实际图像在中间缩放)。
所以 - 我想将Bitmap中的透明像素转换为纯色 - 但我无法弄清楚如何做到这一点!
任何帮助都会受到赞赏!
由于 克里斯
答案 0 :(得分:25)
如果您将图像作为资源包含在内,最简单的方法就是在gimp之类的程序中自行编辑图像。您可以在那里添加背景,并确保它看起来像什么,并且没有用于处理每次加载时修改图像的功率。
如果您自己无法控制图像,可以通过执行类似操作来修改图像,假设Bitmap
被称为image
。
Bitmap imageWithBG = Bitmap.createBitmap(image.getWidth(), image.getHeight(),image.getConfig()); // Create another image the same size
imageWithBG.eraseColor(Color.WHITE); // set its background to white, or whatever color you want
Canvas canvas = new Canvas(imageWithBG); // create a canvas to draw on the new image
canvas.drawBitmap(image, 0f, 0f, null); // draw old image on the background
image.recycle(); // clear out old image
答案 1 :(得分:5)
您可以遍历每个像素并检查它是否透明。
像这样的东西。 (未测试)
Bitmap b = ...;
for(int x = 0; x<b.getWidth(); x++){
for(int y = 0; y<b.getHeight(); y++){
if(b.getPixel(x, y) == Color.TRANSPARENT){
b.setPixel(x, y, Color.WHITE);
}
}
}