public void CreateFrom(string fileName, IconOutputFormat format) { Bitmap bmp = (Bitmap)Bitmap.FromFile(fileName); if (bmp == null) { throw new InvalidFileException(); } try { CreateFrom(bmp, format); } finally { bmp.Dispose(); } }
static private bool SaveLocalIcon(string localIconPath, Bitmap iconBitmap) { try { MultiIcon bmIcon = new MultiIcon(); SingleIcon bsIcon = bmIcon.Add("Icon 1"); IconOutputFormat outputFormat = IconOutputFormat.None; // Save icon as is bsIcon.CreateFrom(iconBitmap, outputFormat); bsIcon.Save(localIconPath); } catch (Exception e) { return(false); } return(true); }
public void CreateFrom(Bitmap bitmap, IconOutputFormat format) { Bitmap bmp = null; IconImage iconImage = null; IColorQuantizer colorQuantizer = new EuclideanQuantizer(); if (bitmap.PixelFormat != PixelFormat.Format32bppArgb) { throw new InvalidPixelFormatException(PixelFormat.Undefined, PixelFormat.Format32bppArgb); } mIconImages.Clear(); if (format == IconOutputFormat.None) { Add(bitmap); return; } // Vista // 256x256x32 if ((format & IconOutputFormat.Vista) == IconOutputFormat.Vista) { Add(bitmap); } try { if ((format & IconOutputFormat.WinXPUnpopular) == IconOutputFormat.WinXPUnpopular) { bmp = ResizeBitmap(bitmap, 64, 64); iconImage = Add(bmp); // XP bmp.Dispose(); } } catch (Exception e) { } try { bmp = ResizeBitmap(bitmap, 48, 48); if ((format & IconOutputFormat.WinXP) == IconOutputFormat.WinXP) { iconImage = Add(bmp); // XP } if ((format & IconOutputFormat.Win95) == IconOutputFormat.Win95) { Add(colorQuantizer.Convert(bmp, PixelFormat.Format8bppIndexed), iconImage.Mask); // W95 } if ((format & IconOutputFormat.Win31) == IconOutputFormat.Win31) { Add(colorQuantizer.Convert(bmp, PixelFormat.Format4bppIndexed), iconImage.Mask); // W95 } bmp.Dispose(); } catch (Exception e) { } // NOTE: Add support for "IconOutputFormat.WinXP32Only" try { bmp = ResizeBitmap(bitmap, 32, 32); if ((format & IconOutputFormat.WinXP) == IconOutputFormat.WinXP) { iconImage = Add(bmp); // XP } if ((format & IconOutputFormat.Win95) == IconOutputFormat.Win95) { Add(colorQuantizer.Convert(bmp, PixelFormat.Format8bppIndexed), iconImage.Mask); // W95 } if ((format & IconOutputFormat.Win31) == IconOutputFormat.Win31) { Add(colorQuantizer.Convert(bmp, PixelFormat.Format4bppIndexed), iconImage.Mask); // W31 } if ((format & IconOutputFormat.Win30) == IconOutputFormat.Win30) { Add(colorQuantizer.Convert(bmp, PixelFormat.Format1bppIndexed), iconImage.Mask); // W30 } bmp.Dispose(); } catch (Exception e) { } try { bmp = ResizeBitmap(bitmap, 24, 24); if ((format & IconOutputFormat.WinXPUnpopular) == IconOutputFormat.WinXPUnpopular) { iconImage = Add(bmp); // XP } if ((format & IconOutputFormat.Win95Unpopular) == IconOutputFormat.Win95Unpopular) { Add(colorQuantizer.Convert(bmp, PixelFormat.Format8bppIndexed), iconImage.Mask); // W95 } if ((format & IconOutputFormat.Win31Unpopular) == IconOutputFormat.Win31Unpopular) { Add(colorQuantizer.Convert(bmp, PixelFormat.Format4bppIndexed), iconImage.Mask); // W31 } if ((format & IconOutputFormat.Win30) == IconOutputFormat.Win30) { Add(colorQuantizer.Convert(bmp, PixelFormat.Format1bppIndexed), iconImage.Mask); // W30 } bmp.Dispose(); } catch (Exception e) { } try { bmp = ResizeBitmap(bitmap, 16, 16); if ((format & IconOutputFormat.WinXP) == IconOutputFormat.WinXP) { iconImage = Add(bmp); // XP } if ((format & IconOutputFormat.Win95) == IconOutputFormat.Win95) { Add(colorQuantizer.Convert(bmp, PixelFormat.Format8bppIndexed), iconImage.Mask); // W95 } if ((format & IconOutputFormat.Win31) == IconOutputFormat.Win31) { Add(colorQuantizer.Convert(bmp, PixelFormat.Format4bppIndexed), iconImage.Mask); // W31 } if ((format & IconOutputFormat.Win30) == IconOutputFormat.Win30) { Add(colorQuantizer.Convert(bmp, PixelFormat.Format1bppIndexed), iconImage.Mask); // W30 } bmp.Dispose(); } catch (Exception e) { } }