我想使用 C# 将带有 alpha 通道的任何位深度的 PNG 转换为带有 alpha 通道的32 位深度。带有 alpha 通道的示例 4bit png 的属性 我尝试了以下两种方法,但输出未转换为 32Bit。
第一种方法
private Bitmap ChangePixelFormat(Bitmap inputImage, PixelFormat newFormat)
{
Bitmap bmp = new Bitmap(inputImage.Width, inputImage.Height, newFormat);
using (Graphics g = Graphics.FromImage(bmp))
{
g.DrawImage(inputImage, 0, 0);
}
return bmp;
}
第二种方法
public Bitmap ConvertTo32bpp(string filepath)
{
using (System.Drawing.Image OriginalImage = System.Drawing.Image.FromFile(filepath))
{
Bitmap myBitmap;
ImageCodecInfo myImageCodecInfo;
System.Drawing.Imaging.Encoder myEncoder;
EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;
myBitmap = new Bitmap(filepath);
myImageCodecInfo = GetEncoderInfo("image/png");
myEncoder = System.Drawing.Imaging.Encoder.ColorDepth;
myEncoderParameters = new EncoderParameters(1);
myEncoderParameter =
new EncoderParameter(myEncoder, 32L);
myEncoderParameters.Param[0] = myEncoderParameter;
myBitmap.Save(filepath, myImageCodecInfo, myEncoderParameters);
return myBitmap;
}
}