C# Icon转Byte , Byte转Icon

Icon直接保存成ico文件会严重失真,可以保存为png格式。

但如果要转换到byte,直接使用Icon.ToBitmap().Save方法会出错,需要带一点参数。具体代码如下

public class IconHelper

    {

        ///

        /// Byte转Icon

        ///

        ///

        ///

        public static Icon FromByte(byte[] buffer)

        {

            return Icon.FromHandle(new System.Drawing.Bitmap(new MemoryStream(buffer)).GetHicon());

        }

        ///

        /// Icon转Byte

        ///

        ///

        ///

        public static byte[] ToByte(Icon icon)

        {

            Encoder myEncoder = Encoder.Quality;

            EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 100);

            EncoderParameters encoders = new EncoderParameters(1);

            encoders.Param[0] = myEncoderParameter;

            ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/png");

            using (MemoryStream ms = new MemoryStream())

            {

                icon.ToBitmap().Save(ms, myImageCodecInfo, encoders);

                return ms.GetBuffer();

            }

        }

        private static ImageCodecInfo GetEncoderInfo(string mimeType)

        {

            int j;

            ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();

            for (j = 0; j < encoders.Length; ++j)

            {

                if (encoders[j].MimeType == mimeType)

                    return encoders[j];

            }

            return null;

        }

    }


来源:https://www.cnblogs.com/xyz0835/p/4850063.html

你可能感兴趣的:(C# Icon转Byte , Byte转Icon)