如果我有两个带图像和Alpha通道的JPG文件,我该如何创建PNG文件?
JPG Image + JPG Mask - > PNG具有透明度
我尝试过WPF解决方案:
image.OpacityMask = new ImageBrush ( new BitmapImage ( uriMask ) );
和System.Drawing。
Image bmpMask = Image.FromFile ( maskFilePath );
gfxNewImage.SetClip ( Graphics.FromImage (bmpMask) );
但我有两个问题(黑色背景或全黑)
任何想法或例子?
THANKYOU
答案 0 :(得分:2)
好的,我们假设你有一个JPEG图片和一个带Alpha通道的Png图片。 你应该这样做,只有当这两个图像大小相同时它才会起作用。
Bitmap jpegFile = new Bitmap("JpegFile.jpg");
Bitmap alphaFile = new Bitmap("Png.jpg");
for(int i=0;i<jpegFile.Width;i++)
{
for(int j=0;j<jpegFile.Height;j++)
{
Color withAlpha = jpegFile.GetPixel(i,j);
withAlpha.A = alphaFile.GetPixel(i,j).A;
jpegFile.SetPixel(withAlpha);
}
}
答案 1 :(得分:1)
尝试使用Graphics对象的参数:
using (var g = Graphics.FromImage(bmpMask))
{
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(source, 0, 0, width, height);
}