2

我想使用 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;
        }

    }
4

0 回答 0