我正在处理位图图像的透明部分用洋红色着色(在一些语言中,可以将颜色设置为透明)。我试图在原始位图图像中透明洋红色的像素。
我从SD卡加载位图:
Bitmap bitmap = BitmapFactory.decodeFile(myImagePath);
将其复制到另一个位图以使其可变:
Bitmap bitmap2 = bitmap.copy(Bitmap.Config.ARGB_8888,true);
然后逐像素扫描,找到洋红色的像素,并尝试改变它们的透明度。
for(int x=0;x<bitmap2.getWidth();x++){
for(int y=0;y<bitmap2.getHeight();y++){
if(bitmap2.getPixel(x, y)==Color.rgb(0xff, 0x00, 0xff))
{
int alpha = 0x00;
bitmap2.setPixel(x, y , Color.argb(alpha,0xff,0xff,0xff)); // changing the transparency of pixel(x,y)
}
}
}
但是那些我希望变成透明的像素被转换成黑色。通过更改alpha,我发现最终颜色从argb()
中提到的颜色(不提及alpha)变为黑色。例如,Color。argb(0xff,0xff,0xff,0xff)
变为白色,颜色。argb(0x80,0xff,0xff,0xff)
为灰色,而为彩色。argb(0x00,0xff,0xff,0xff)
变黑。
我不知道怎么回事。
有没有可能没有alpha通道,我应该先设置/定义它?如果是,怎么做?
编辑1:
根据Der Gol... lum的评论,我已经修改了我的代码:
Paint mPaint = new Paint();
mPaint.setAlpha(0);
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
mPaint.setAntiAlias(true);
Bitmap bitmap = BitmapFactory.decodeFile(myBackImagePath).copy(Bitmap.Config.ARGB_8888 , true);
Canvas canvas = new Canvas(bitmap);
canvas.drawBitmap(bitmap, 0, 0, mPaint);
if(bitmap.getPixel(0, 0)==Color.rgb(0xff, 0x00, 0xff))
{
for(int x=0;x<bitmap.getWidth();x++){
for(int y=0;y<bitmap.getHeight();y++){
if(bitmap.getPixel(x, y)==Color.rgb(0xff, 0x00, 0xff))
{
bitmap.setPixel(x, y,Color.TRANSPARENT);
}
}
}
但是结果或多或少是一样的。使用不同的PorterDuff
模式会导致整个位图的透明度或使目标像素变黑:
有人知道吗?
#klem1,#klem2 { opacity:0.4; filter:alpha(opacity=40); /* For IE8 and earlier */ } #klem1:hover,#klem2:hover { opacity:1.0; filter:alpha(opacity=100); /* For IE8 and earlier */ } div.background { widt
问题内容: 所以我有两个图像,我想显示在彼此的顶部。这个 上面的图像应该是透明的,这样底部的图像是透明的 可见。 Here is my code so far: With the face in the bottom and the eyes on top. 问题答案: Try this 我没有你的两个源图像,所以我不能确定它将与工作 他们。如有任何问题,请提供两者的原件。
我的任务是: 创建一个TBitmap对象 如何在Delphi XE中做到这一点?
我试图从眼动跟踪结果创建一个热图(显示用户在屏幕上最频繁查看的位置)。 对于用户经常查看的像素,我想设置不透明的红色,对于不太频繁的橙色,等等...我使用红色到绿色的色阶。但是对于频率最低的像素,我希望它们不仅显示绿色,而且是透明的。 问题是,当我尝试改变颜色时,例如使用它实际上并没有根据新旧颜色将像素作为平均值着色,它只是显示一些新的、看起来奇怪的颜色。 图像与alpha RGBA值设置为50:
问题内容: 我正在使用带有背景图像的透明1x1图像,以便能够使用精灵并仍为某些图标提供替代文本。 我想为图像使用数据URI来减少HTTP请求的数量,但是 产生透明图像的最小字符串是 什么? 我意识到我可以使用数据URI:s代替实际的图片,但将所有内容保存在CSS中而不是分散放置时,维护起来会更容易。 问题答案: 在使用不同的透明GIF玩耍后,有些不稳定并会导致CSS故障。例如,如果您有一个并且使用
我试图拖动对象表示为PNG图像透明背景从AnchorPane到HBox。 我使用以下线条将图像设置为拖动视图: 对于不透明的背景图像,这一切都很好,但对于透明的图像,图像的背景是白色的,不透明度为“0.8”。 我尝试为节点拍摄快照: 但它不起作用,白色背景仍然存在。有没有其他方法可以让它像原始图像一样透明?