我有一些透明的PNG图像,我需要创建版本,图像层组成一个白色背景.我已尝试使用Image Magick"转换"操作进行各种操作,但要么根本没有发生任何事情,要么我收到错误.我不想转到中间JPG表单,因为我不想要这些工件.当然,在Gimp或Photoshop或其他任何地方都很容易做到这一点,但我真的宁愿从命令行编写它,因为有很多这样的东西.
非工作Image Magick命令的示例是:
convert img1.png -background white -flatten img1-white.png
Run Code Online (Sandbox Code Playgroud)
这会导致错误.
谢谢!
假设您有任何图像(PNG或JPG).此图像具有白色背景,我需要使此背景透明.
我试过这些例子:
convert original.png -background none transparent.pngconvert original.png -background white -flatten -alpha off transparent.png但没有理想的结果.
我该怎么做?
重要说明:使用convert命令行.
根据文件 UIVIew @property(nonatomic) CGFloat alpha
此属性的值是0.0到1.0范围内的浮点数,其中0.0表示完全透明,1.0表示完全不透明. 此值仅影响当前视图,不会影响其任何嵌入的子视图.
我有一个容器视图配置如下:
self.myView.backgroundColor = [UIColor blackColor];
self.myView.alpha = 0.5;
[self addSubview:self.myView];
Run Code Online (Sandbox Code Playgroud)
然后将子视图添加到'myView'
[myView addSubView anotherView];
anotherView.alpha = 1;
NSLog(@"anotherView alpha = %f",anotherView.alpha); // prints 1.0000 as expected
Run Code Online (Sandbox Code Playgroud)
但' anotherView '在屏幕上确实有alpha(它不像预期的那样不透明)
这怎么可能,可以做些什么?
我已经有过几次了,所以这里是:我正在制作一些图表,其中包含一个参数估计值的曲线给定一个调整参数.
通常,我也为每个估计值都有SD,所以我可以在每个估计值周围显示误差条.
但是,我不喜欢错误栏,并且更喜欢它的一些平滑版本.这本身没问题(即我知道如何做到这一点).但是,我的情节包含几条相似的曲线,每条曲线都有自己的颜色.因此,我想将"平滑的错误区域"添加到每条曲线中,颜色与曲线本身的颜色相匹配.当然,我想透明地做到这一点,所以我仍然可以通过'错误区域'看到其他曲线.
所以,我的问题是:给定一种颜色(由数字,名称或rgb值指定---注意前两个会产生额外的问题,但这种情况经常发生,因为基本的绘图功能将这些作为有效颜色值),我怎样才能找到具有相同rgb但不同(给定)alpha级别(透明度)的匹配颜色.我想要一个像以下的功能:
makeTransparent<-function(someColor, alpha=100)
{
newColor<-someColor + alpha #I wish
return(newColor)
}
Run Code Online (Sandbox Code Playgroud)
这适用于以下事项:
makeTransparent(2)
makeTransparent("red")
makeTransparent(rgb(0,0,1))
Run Code Online (Sandbox Code Playgroud)
编辑当我想念一些明显的东西时,我讨厌它,但@themel指出了我(再次).这是一个完整的解决方案(注意:工作矢量化,因此您可以传递多种颜色;但此时仅支持一个alpha):
#note: always pass alpha on the 0-255 scale
makeTransparent<-function(someColor, alpha=100)
{
newColor<-col2rgb(someColor)
apply(newColor, 2, function(curcoldata){rgb(red=curcoldata[1], green=curcoldata[2],
blue=curcoldata[3],alpha=alpha, maxColorValue=255)})
}
Run Code Online (Sandbox Code Playgroud) 容易就像自己.我想制作一个alpha按钮,这样就可以选择drawable:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Play/Pause -->
<item android:state_selected="false" android:drawable="@drawable/item" />
<item android:state_selected="true" android:drawable="@drawable/item" />
</selector>
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Play/Pause -->
<item android:alpha="125" android:state_selected="false" android:drawable="@drawable/item" />
<item android:alpha="255" android:state_selected="true" android:drawable="@drawable/item" />
</selector>
Run Code Online (Sandbox Code Playgroud)
谢谢大家.
我在.Net中使用System.Drawing.Image进行从png到jpeg的简单转换.我基本上只使用这两行代码:
Image img = Image.FromFile(filename);
img.Save(newFilename, System.Drawing.Imaging.ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)
它工作正常,除了png文件由于alpha通道包含透明度.在这种情况下,转换的jpeg具有黑色背景.有没有办法让背景变白?
我想知道如何在OpenCV中绘制半透明的形状,类似于下图中的那些(来自http://tellthattomycamera.wordpress.com/)

我不需要那些花哨的圆圈,但我希望能够绘制一个矩形,例如,在3通道彩色图像上,并指定矩形的透明度,类似于
rectangle (img, Point (100,100), Point (300,300), Scalar (0,125,125,0.4), CV_FILLED);
Run Code Online (Sandbox Code Playgroud)
0,125,125矩形的颜色在哪里,并0.4指定透明度.但是,OpenCV没有在其绘图功能中内置此功能.如何在OpenCV中绘制形状,以便绘制的原始图像通过形状部分可见?
我发现了这个问题,我遇到了几乎相同的问题.我怎么能只将alpha应用于相对布局而不是它的孩子?有人可以帮忙吗?
我有一个矩形的LinearLayout,它有一些边距,一些圆角和一个0.3的alpha值.在这个布局中,我有4种不同的布局,因为我在不同的位置显示不同的图像.我的问题是虽然主要布局是0.3,但我希望我的孩子完全可见,或者不受它的父母alpha影响,我想知道我怎么能请那样做呢?我尝试在子布局上设置alpha = 1,但它不起作用.将它设置为0确实会使子布局消失,所以看起来我可以减少到0.3以下,但不能超过父级.这是一个错误还是我做错了?谢谢.
我正在尝试将RGBA图像(前景图像)的alpha混合操作转换为RGB图像(背景图像).但是,在这样做的时候,我想我可能正在做错误的alpha混合操作或做错了.例如,我的RGB图像的像素是(127,127,127)的浅灰色.像素的RGBA图像的像素将是(0,0,255).在进行混合操作后,最终颜色将为(127,0,255).但是,我认为这更像是一种添加剂混合物,与我正在进行的操作不同.
关于如何设置我的值,请看一下
incPixelColor[0] = 0; (red)
incPixelColor[1] = 0; (green)
incPixelColor[2] = 255; (blue)
incPixelColor[3] = 255; (alpha)
currentPixelColor[0] = 127; (red)
currentPixelColor[1] = 127; (green)
currentPixelColor[2] = 127; (blue)
Run Code Online (Sandbox Code Playgroud)
关于我的计算方法,请看一下
float incAlpha = (currentPixelColor[3]/255.0f);
float red = ((float)incPixelColor[0]/255.0f * incAlpha) + ((float)currentPixelColor[0]/255.0f);
float green = ((float)incPixelColor[1]/255.0f * incAlpha) + ((float)currentPixelColor[1]/255.0f);
float blue = ((float)incPixelColor[2]/255.0f * incAlpha) + ((float)currentPixelColor[2]/255.0f);
currentPixelColor[0] = min(red * 255, 255.0f);
currentPixelColor[1] = min(green * 255, 255.0f);
currentPixelColor[2] = min(blue * 255, 255.0f);
Run Code Online (Sandbox Code Playgroud)
对于没有alpha的像素,我希望该值为(0,0,255),然后对于具有alpha的图像,我希望它能够融入.在上面的操作结束时,它将是(127,127) ,255).我应该检查每个像素是否有alpha,如果有,那么进行混合还是有其他方法可以做到这一点?
algorithm image-manipulation alphablending image-processing alpha-transparency
当我们在 Jetpack Compose 中显示Dialog/AlertDialog时,背景似乎有点暗,有没有办法调整背景 Alpha 或使其透明?例如:当显示对话框时,该图像中的白色背景变成深灰色。

android background dialog alpha-transparency android-jetpack-compose