/// <summary> /// Print image with 24bppRgb pixel format /// </summary> /// <param name="image">Image with 24bppRgb pixel format</param> /// <param name="outputPath">Path to print image</param> public static void Print24BppImage(KrecImage image, string outputPath) { var bmp = new Bitmap(image.Width, image.Height, PixelFormat.Format24bppRgb); bmp.SetResolution(image.HorizontalResolution, image.VerticalResolution); bmp.WithBitmapData(bitmapData => { var rgbValues = BitmapProcessor.Reconstruct24To24BppRgbBitmap(bitmapData, image.ImageData); IntPtr ptr = bitmapData.Scan0; Marshal.Copy(rgbValues, 0, ptr, rgbValues.Length); }); bmp.Save(outputPath); }
/// <summary> /// Print image with 8bppIndexed pixel format (before printing convert it to 24bpp) /// </summary> /// <param name="image">Image with 8bppIndexed pixel format</param> /// <param name="outputPath">Path to print image</param> public static void Print8BppImage(KrecImage image, string outputPath) { var bmp = new Bitmap(image.Width, image.Height, PixelFormat.Format24bppRgb); bmp.SetResolution(image.HorizontalResolution, image.VerticalResolution); int len = image.Width * image.Height * 3; var result = new byte[len]; for (var i = 0; i < len; i += 3) { int ind = i / 3; result[i] = result[i + 1] = result[i + 2] = image.ImageData[ind]; } bmp.WithBitmapData(bitmapData => { var grayscaleValues = BitmapProcessor.Reconstruct24To24BppRgbBitmap(bitmapData, result); IntPtr ptr = bitmapData.Scan0; Marshal.Copy(grayscaleValues, 0, ptr, grayscaleValues.Length); }); bmp.Save(outputPath); }