当前位置: 首页 > 面试题库 >

Android位图:将透明像素转换为颜色

鄂和璧
2023-03-14
问题内容

我有一个Android应用程序,可将图像加载为位图并将其显示在ImageView中。问题在于图像似乎具有透明背景;这会导致图像上的某些黑色文本在黑色背景下消​​失。

如果将ImageView背景设置为白色,则可以完成这种工作,但是在图像上会出现丑陋的大边框,将其拉伸以适合父对象(实际图像在中间缩放)。

所以-我想将位图中的透明像素转换为纯色-但我不知道该怎么做!

任何帮助将不胜感激!

谢谢克里斯


问题答案:

如果要将图像作为资源包括在内,最简单的方法就是自己在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


 类似资料:
  • 问题内容: 我想将位图打印到移动蓝牙打印机(Bixolon SPP-R200)-SDK不提供直接方法来打印内存图像。所以我想到了这样转换一个位图: 到单色位图。我正在使用Canvas在给定的位图上方绘制黑色文本,效果很好。但是,当我将上述位图转换为ByteArray时,打印机似乎无法处理这些字节。我怀疑我需要一个每个像素一位的数组(一个像素将是白色= 1或黑色= 0)。 似乎没有方便的开箱即用的方

  • 我试图从眼动跟踪结果创建一个热图(显示用户在屏幕上最频繁查看的位置)。 对于用户经常查看的像素,我想设置不透明的红色,对于不太频繁的橙色,等等...我使用红色到绿色的色阶。但是对于频率最低的像素,我希望它们不仅显示绿色,而且是透明的。 问题是,当我尝试改变颜色时,例如使用它实际上并没有根据新旧颜色将像素作为平均值着色,它只是显示一些新的、看起来奇怪的颜色。 图像与alpha RGBA值设置为50:

  • 问题内容: 如何将图像的白色背景转换为透明背景?谁能给我打电话怎么做? 问题答案: Google的第一个结果是: 使颜色透明 http://www.rgagnon.com/javadetails/java-0265.html 它使图像的蓝色部分透明,但是我敢肯定您可以对其进行调整以使用白色 (提示:传递给函数,而不是)

  • 我正在处理位图图像的透明部分用洋红色着色(在一些语言中,可以将颜色设置为透明)。我试图在原始位图图像中透明洋红色的像素。 我从SD卡加载位图: 将其复制到另一个位图以使其可变: 然后逐像素扫描,找到洋红色的像素,并尝试改变它们的透明度。 但是那些我希望变成透明的像素被转换成黑色。通过更改alpha,我发现最终颜色从中提到的颜色(不提及alpha)变为黑色。例如,变为白色,为灰色,而变黑。 我不知道

  • 我的目标是使特定的颜色在图像上透明,就像在游戏的平铺中一样,在加载时忽略一种普通的背景色。 我所读到的 我添加到默认值的代码。JAVA 使图像可变提供了更好的结果,但仍然没有从图像中减去。总体而言,在使用滤镜后,它似乎是作为整个图像上方的滤镜工作的,并且没有搜索我设置的颜色,因此颜色总是存在,并且不排除不取决于所使用的模式。 第二种选择 仅使用一个600x600 px png文件将应用程序加载时间

  • 我创建了一个对话框,用户可以在其中浏览图像,然后看到画布上绘制的图像的预览。图像被缩放,以便在框中安装时保持其宽高比。我使用了在这个答案中找到的调整大小的方法,包括将图像从SWT转换为AWT,执行调整大小,从AWT转换回SWT,最后在画布上绘制。由于这个过程在时间和处理能力方面非常昂贵,如果图像大小完全正确,我选择跳过调整大小的步骤,因此不需要以任何方式进行转换。 在处理alpha透明的图像时会出