Change colors of black-and-white TIFF after converting from PDF
In this article, we will demonstrate how to change the color palette after converting a PDF document to 1bpp TIFF in C#.
In the following code sample, we render a PDF to a 1bpp TIFF. Then create a bitmap from the TIFF, create a new color palette, edit the entries of this palette and assign this new palette to the bitmap.
static void Main(string[] args)
{
Document document = new Document(new FileStream(@"..\..\input.pdf", FileMode.Open));
// Convert the PDF Document to TIFF file
ConvertToTiffOptions tiffOptions = new ConvertToTiffOptions(300.0, TiffCompression.CcittG3);
string tempPath = @"..\..\tmp.tiff";
using (FileStream drawImage = new FileStream(tempPath,
FileMode.OpenOrCreate, FileAccess.Write))
{
document.Pages[0].ConvertToTiff(drawImage, tiffOptions);
}
string tiffPath = @"..\..\newImage.bmp";
using (Bitmap tiff = new Bitmap(tempPath))
{
// Create a new colorpalette
System.Drawing.Imaging.ColorPalette palette = Create1bbPalette();
// Set the palette to other colors
palette.Entries[0] = System.Drawing.Color.FromArgb(0, 0, 64, 128);
palette.Entries[1] = System.Drawing.Color.FromArgb(0, 223, 233, 245);
// Set the palette of the bitmap to the new palette
// Palette entries must be changed before assign the palette to the bitmap
tiff.Palette = palette;
// Save the new image with the new colorpalette
tiff.Save(tiffPath, System.Drawing.Imaging.ImageFormat.Bmp);
}
File.Delete(tempPath);
}
static protected System.Drawing.Imaging.ColorPalette Create1bbPalette()
{
Bitmap bitmap =
new Bitmap(1, 1, System.Drawing.Imaging.PixelFormat.Format1bppIndexed);
System.Drawing.Imaging.ColorPalette palette = bitmap.Palette;
bitmap.Dispose();
return palette;
}