writing a CCITT-G4 compressed TIFF image with Magick++
Posted: 2011-03-28T04:26:44-07:00
Hi all,
I try to create an image filled with my own data and save it as a bi-level CCITT G4 TIFF image.
When I create the image as an [RGB] [Gray-level] [8-bit depth] image, the TIFF image written displays
a top left black square as expected.
However when I create it as a [TIFF] [monochrome] [bi-level] [1-bit depth] image, the image written in
the file looks all blank (no black square inside), what am I doing wrong in my code below?
Am I missing some steps or settings?
I try to create an image filled with my own data and save it as a bi-level CCITT G4 TIFF image.
When I create the image as an [RGB] [Gray-level] [8-bit depth] image, the TIFF image written displays
a top left black square as expected.
However when I create it as a [TIFF] [monochrome] [bi-level] [1-bit depth] image, the image written in
the file looks all blank (no black square inside), what am I doing wrong in my code below?
Am I missing some steps or settings?
Code: Select all
Image * image;
image = new Image(Geometry(100, 100), Color(MaxRGB, MaxRGB, MaxRGB));
image->compressType(MagickLib::Group4Compression); // alt. Magick::NoCompression
image->type(BilevelType); // alt. GrayscaleType
image->magick("TIFF"); // alt. RGB
image->depth(1); // nb. of bits per pixel
image->monochrome(true);
image->modifyImage();
PixelPacket * packet = image->getPixels(0, 0, image->columns(), image->rows());
PixelPacket * pixel;
for (unsigned int i=0; i < 20; ++i)
{
PixelPacket * pixelBaseInX = packet + i;
for (unsigned int j=0; j < 20; ++j)
{
pixel = pixelBaseInX + j * image->columns();
pixel->red = 0; // or 1 -- no difference in result image
pixel->green = 0; // or 1 -- no difference in result image
pixel->blue = 0; // or 1 -- no difference in result image
}
}
image->syncPixels();
image->write("image.tif");