Mega Code Archive

 
Categories / C# / 2D Graphics
 

Bitmap Image Utils

using System; #if !SILVERLIGHT using System.Drawing; #endif using System.IO; using System.Windows.Media.Imaging; using Color = System.Windows.Media.Color; namespace FreeGoo.WpfRenderer {     public static class BitmapImageUtils     { #if SILVERLIGHT         public static BitmapImage LoadBitmapImage(string imageName)         {                         BitmapImage bi = new BitmapImage();             bi.UriSource = new Uri(new Uri(Directory.GetCurrentDirectory()+"/"), imageName);             return bi;         }         public static BitmapImage LoadAndColorizeBitmapImage(string imageName, Color color)         {             return LoadBitmapImage(imageName);         } #else                         public static BitmapImage LoadBitmapImage(string imageName)         {                        FileStream fs = File.Open(imageName, FileMode.Open);             Bitmap bitmap = new Bitmap(fs);             return Convert(bitmap);         }         public static BitmapImage LoadAndColorizeBitmapImage(string imageName, Color color)         {             FileStream fs = File.Open(imageName, FileMode.Open);             using (fs)             {                 Bitmap bitmap = new Bitmap(fs);                 ColorizeBitmap(bitmap, color);                 return Convert(bitmap);             }         }                 public static Color Colorize(Color originalColor, Color color)         {             int strength = (originalColor.R + originalColor.G + originalColor.B);             return                 Color.FromArgb(                     originalColor.A,                     System.Convert.ToByte(color.R * strength / 255 / 3),                     System.Convert.ToByte(color.G * strength / 255 / 3),                     System.Convert.ToByte(color.B * strength / 255 / 3));         }                 public static Color ToMediaColor(this System.Drawing.Color color)         {             return                 Color.FromArgb(color.A, color.R, color.G, color.B);         }         public static System.Drawing.Color ToSystemColor(this Color color)         {             return                 System.Drawing.Color.FromArgb(color.A, color.R, color.G, color.B);         }                  public static BitmapImage Convert(Bitmap bitmap)          {              MemoryStream memoryStream = new MemoryStream();              bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png);              BitmapImage bitmapImage = new BitmapImage();              bitmapImage.BeginInit();              bitmapImage.StreamSource = new MemoryStream(memoryStream.ToArray());              bitmapImage.EndInit();              return bitmapImage;          }         public static Bitmap Convert(BitmapImage bitmap)         {             MemoryStream memoryStream = new MemoryStream();             BitmapEncoder bitmapEncoder = new BmpBitmapEncoder();             bitmapEncoder.Frames.Add(BitmapFrame.Create(memoryStream));             bitmapEncoder.Save(memoryStream);             return new Bitmap(memoryStream);         }         public static void ColorizeBitmap(Bitmap bitmap, Color tintColor)         {             for (int x = 0; x < bitmap.Width; x++)             {                 for (int y = 0; y < bitmap.Height; y++)                 {                     Color clearPixel = bitmap.GetPixel(x, y).ToMediaColor();                     Color tintedPixel = Colorize(clearPixel, tintColor);                     bitmap.SetPixel(x, y, tintedPixel.ToSystemColor());                 }             }         } #endif     } }