Icon直接保存成ico文件會嚴重失真,能夠保存爲png格式。spa
但若是要轉換到byte,直接使用Icon.ToBitmap().Save方法會出錯,須要帶一點參數。具體代碼以下code
public class IconHelper { /// <summary> /// Byte轉Icon /// </summary> /// <param name="buffer"></param> /// <returns></returns> public static Icon FromByte(byte[] buffer) { return Icon.FromHandle(new System.Drawing.Bitmap(new MemoryStream(buffer)).GetHicon()); } /// <summary> /// Icon轉Byte /// </summary> /// <param name="icon"></param> /// <returns></returns> 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; } }