Click here to Skip to main content
11,480,847 members (63,046 online)
Click here to Skip to main content

Bitmap to Tiff conversion using Libtiff

, 6 Oct 2004 224.4K 5.5K 45
Rate this:
Please Sign up or sign in to vote.
Bitmap to Tiff conversion using Libtiff

Introduction

What the article/code snippet does? : It converts 256 color bitmap file to Black & white tiff file using Libtiff.

Why it's useful? : This Article provides a method to convert Bitmap Image to Tiff Image. The main target of this demo project is to tell you about writing a tiff file. I was trying from so long time to get example code that can write tiff file. But no one can provide one as simple as I wished it to be. Now this code would at least help you. I've included the Bitmap Image used in this demo.

Where is Libtiff? : You can get Libtiff Library free from http://www.libtiff.org/. Also, I've included Library files in my demo project. All library contents are as it is provided & with their owner rights. I have no concern with that Library's bugs. I am just using this library to show how to convert a bmp to a tiff.

How to use this code

I've collected all conversion code in a single function which converts bmp to tiff, Function is given below or you can fin this code in demo project.

//load Bitmap

HBITMAP hImage = (HBITMAP)LoadImage(NULL, "C:\\MyBit.bmp", IMAGE_BITMAP,
0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION|LR_DEFAULTSIZE);

CBitmap* m_Bitmap = CBitmap::FromHandle(hImage);

//Memory allocation is still 600x600 in your code..
BYTE* bmpBuffer=(BYTE*)GlobalAlloc(GPTR, 600*600);//allocate memory


// Size of bitmap as I draw by using x,y points...
m_Bitmap->GetBitmapBits(600*600 ,bmpBuffer);


TIFF *image;

  // Open the TIFF file
  if((image = TIFFOpen("C:\\output.tif", "w")) == NULL)
  {
    printf("Could not open output.tif for writing\n");
  }

  TIFFSetField(image, TIFFTAG_IMAGEWIDTH,600);
  TIFFSetField(image, TIFFTAG_IMAGELENGTH,600);
  TIFFSetField(image, TIFFTAG_BITSPERSAMPLE,8);
  TIFFSetField(image, TIFFTAG_SAMPLESPERPIXEL,1);

  uint32 rowsperstrip = TIFFDefaultStripSize(image, -1); 
  //<REC> gives better compression

  TIFFSetField(image, TIFFTAG_ROWSPERSTRIP, rowsperstrip);
  TIFFSetField(image, TIFFTAG_COMPRESSION, COMPRESSION_PACKBITS); 

// Start CCITTFAX3 setting
  
  uint32 group3options = GROUP3OPT_FILLBITS+GROUP3OPT_2DENCODING;
  TIFFSetField(image, TIFFTAG_GROUP3OPTIONS, group3options);
  TIFFSetField(image, TIFFTAG_FAXMODE, FAXMODE_CLASSF);
  TIFFSetField(image, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
  TIFFSetField(image, TIFFTAG_ROWSPERSTRIP, -1L);


// End CCITTFAX3 setting

  TIFFSetField(image, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);

  TIFFSetField(image, TIFFTAG_FILLORDER, FILLORDER_MSB2LSB);
  TIFFSetField(image, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
 
  TIFFSetField(image, TIFFTAG_RESOLUTIONUNIT, RESUNIT_INCH);
  TIFFSetField(image, TIFFTAG_XRESOLUTION, 100.0);
  TIFFSetField(image, TIFFTAG_YRESOLUTION, 100.0);

 
   char page_number[20];
    sprintf(page_number, "Page %d", 1);

    TIFFSetField(image, TIFFTAG_SUBFILETYPE, FILETYPE_PAGE);
    TIFFSetField(image, TIFFTAG_PAGENUMBER, 1, 1);
    TIFFSetField(image, TIFFTAG_PAGENAME, page_number);



  // Write the information to the file
BYTE *bits;
for (int y = 0; y < 600; y++)
  {
    bits= bmpBuffer + y*600;
    if (TIFFWriteScanline(image,bits, y, 0)==-1) MessageBox("Complete or error");
  }

  // Close the file
  TIFFClose(image);


What's New in this update:

  1. Improved Compression
  2. Multi-page Tiff (Method to add pages in tiff)
  3. 256 colors of bmp

What is Next?

  1. Color in tiff file
  2. Other format to tiff

My wish was to provide you one independent function that can be used anywhere. That's what I did in this article.

What am I expecting from you all?

As I think, I'm not an expert like you, long way yet remain to take over. Please point out my bugs in this article so I can improve those. Thanks, OK! Good Bye, Have a nice life...

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Sumit Kapoor
Software Developer (Senior)
India India
Working in Patni Computer Systems, Noida(INDIA). I like to work in C/C++ even from my school time & mostly worked using C++, VC++, COM.

I want to give something bigger than biggest to IT field. Try is going on.

I like to make friends.
That’s all about me.

Ok! See you.
Have a nice Life.

Comments and Discussions

 
GeneralReading Multiple images of Tiff to IplImage format Pin
Sai Veeranki18-Feb-11 9:01
memberSai Veeranki18-Feb-11 9:01 
QuestionReading All the images from the tiff Pin
Sai Veeranki10-Feb-11 11:46
memberSai Veeranki10-Feb-11 11:46 
QuestionHow to convert Tiff file to BMP Pin
Nilesh Hirpara2-Aug-10 12:44
memberNilesh Hirpara2-Aug-10 12:44 
QuestionCan yoiu show me how to go the other way? TIFF-&gt;BMP Pin
Mick Leong29-Dec-09 21:39
memberMick Leong29-Dec-09 21:39 
Generalhi Pin
Aric Green21-Dec-09 19:03
memberAric Green21-Dec-09 19:03 
GeneralLoadImage() error ERROR_NOT_ENOUGH_MEMORY Pin
renoreballos28-Nov-08 23:41
memberrenoreballos28-Nov-08 23:41 
GeneralRe: LoadImage() error ERROR_NOT_ENOUGH_MEMORY Pin
Sumit Kapoor5-Dec-08 6:54
memberSumit Kapoor5-Dec-08 6:54 
General16 bits tiff Pin
smart_dummies3-Nov-08 13:32
membersmart_dummies3-Nov-08 13:32 
Generalbmp to ccitt g31d convertion Pin
Member 39495025-Oct-08 21:16
memberMember 39495025-Oct-08 21:16 
GeneralTo change Jpeg compresed tif file to ccitt Compresed tiff file Pin
kiran_chikhale_IVI24-Oct-07 3:47
memberkiran_chikhale_IVI24-Oct-07 3:47 
QuestionDo you have any sample for tiff to bmp? Pin
jasonshen2067-Sep-07 18:53
memberjasonshen2067-Sep-07 18:53 
QuestionCan i convert any bmp image to tiff ccitt group 4 image Pin
Anil Pandya23-Jul-07 6:26
memberAnil Pandya23-Jul-07 6:26 
GeneralLibrary Linking Error(Solution) Pin
Sumit Kapoor19-Apr-07 21:31
memberSumit Kapoor19-Apr-07 21:31 
GeneralConversion to Color TIFF Pin
Sabareeswaran18-Dec-06 3:40
memberSabareeswaran18-Dec-06 3:40 
GeneralJuanma Pin
x3yulo9-Feb-06 1:36
memberx3yulo9-Feb-06 1:36 
AnswerRe: Juanma (How to run Debug version of project) Pin
Sumit Kapoor9-Feb-06 1:59
memberSumit Kapoor9-Feb-06 1:59 
GeneralRe: Juanma (How to run Debug version of project) Pin
x3yulo9-Feb-06 22:30
memberx3yulo9-Feb-06 22:30 
AnswerRe: Juanma (How to run Debug version of project) Pin
Sumit Kapoor10-Feb-06 14:55
memberSumit Kapoor10-Feb-06 14:55 
GeneralBitmap 1280x960 Pin
jeff_dodgeit31-Oct-05 17:51
memberjeff_dodgeit31-Oct-05 17:51 
GeneralRe: Bitmap 1280x960 Pin
Sumit Kapoor31-Oct-05 22:58
memberSumit Kapoor31-Oct-05 22:58 
GeneralRe: Bitmap 1280x960 Pin
dpatd11-Nov-10 6:13
memberdpatd11-Nov-10 6:13 
GeneralRe: Bitmap 1280x960 Pin
dpatd11-Nov-10 6:18
memberdpatd11-Nov-10 6:18 
GeneralRe: Bitmap 1280x960 Pin
Sumit Kapoor11-Nov-10 6:52
memberSumit Kapoor11-Nov-10 6:52 
GeneralRe: Bitmap 1280x960 Pin
dpatd11-Nov-10 12:04
memberdpatd11-Nov-10 12:04 
GeneralRe: Bitmap 1280x960 Pin
Sumit Kapoor11-Nov-10 17:22
memberSumit Kapoor11-Nov-10 17:22 
GeneralTrying to compile, but... Pin
lets_pandora119-Oct-05 4:50
memberlets_pandora119-Oct-05 4:50 
GeneralRe: Trying to compile, but... Pin
Sumit Kapoor19-Oct-05 4:58
memberSumit Kapoor19-Oct-05 4:58 
GeneralError msg Pin
lets_pandora120-Oct-05 5:21
memberlets_pandora120-Oct-05 5:21 
GeneralRe: Error msg Pin
Sumit Kapoor20-Oct-05 14:53
memberSumit Kapoor20-Oct-05 14:53 
GeneralRe: Thanks... Pin
lets_pandora125-Oct-05 6:19
memberlets_pandora125-Oct-05 6:19 
GeneralCan&#180;t find a solution... Pin
lets_pandora11-Nov-05 4:58
memberlets_pandora11-Nov-05 4:58 
GeneralRe: Can&amp;#180;t find a solution... Pin
Sumit Kapoor1-Nov-05 13:57
memberSumit Kapoor1-Nov-05 13:57 
GeneralRe: Can&amp;#180;t find a solution... Pin
NixDude31-May-07 13:57
memberNixDude31-May-07 13:57 
GeneralExternal Exception Pin
lets_pandora19-Nov-05 4:13
memberlets_pandora19-Nov-05 4:13 
Generalccitt group 4(2d) Fxa Pin
MLSHWJZ1-Jul-05 11:39
memberMLSHWJZ1-Jul-05 11:39 
GeneralRe: ccitt group 4(2d) Fxa Pin
Sumit Kapoor3-Jul-05 4:11
memberSumit Kapoor3-Jul-05 4:11 
Questionbmp to tiff in colour? Pin
leojose27-May-05 4:33
memberleojose27-May-05 4:33 
AnswerRe: bmp to tiff in colour? Pin
Sumit Kapoor30-May-05 4:36
memberSumit Kapoor30-May-05 4:36 
GeneralRe: bmp to jpeg conversion Pin
Arif Mohammed20-Jul-05 16:47
memberArif Mohammed20-Jul-05 16:47 
GeneralRe: bmp to jpeg conversion Pin
Sumit Kapoor27-Jul-05 0:12
memberSumit Kapoor27-Jul-05 0:12 
Generala simple interface Pin
Manish K. Agarwal13-Mar-05 19:04
memberManish K. Agarwal13-Mar-05 19:04 
GeneralRe: a simple interface Pin
Sumit Kapoor13-Mar-05 20:54
memberSumit Kapoor13-Mar-05 20:54 
QuestionHow to make multi-page tiff file Pin
zuken212-Feb-05 23:23
memberzuken212-Feb-05 23:23 
AnswerRe: How to make multi-page tiff file Pin
Sumit Kapoor9-Feb-05 0:31
memberSumit Kapoor9-Feb-05 0:31 
GeneralRe: How to make multi-page tiff file Pin
zuken2113-Feb-05 20:59
memberzuken2113-Feb-05 20:59 
GeneralRe: How to make multi-page tiff file Pin
zuken2128-Feb-05 22:43
memberzuken2128-Feb-05 22:43 
GeneralRe: How to make multi-page tiff file Pin
lets_pandora125-Oct-05 8:16
memberlets_pandora125-Oct-05 8:16 
GeneralRe: How to make multi-page tiff file Pin
mohammadftm.er641-Dec-09 0:25
membermohammadftm.er641-Dec-09 0:25 
Questionwhat's TIFFSetField(image, TIFFTAG_GROUP3OPTIONS, group3options)? Pin
Ayato Kamina4-Dec-04 23:36
memberAyato Kamina4-Dec-04 23:36 
AnswerRe: what's TIFFSetField(image, TIFFTAG_GROUP3OPTIONS, group3options)? Pin
Ayato Kamina4-Dec-04 23:42
memberAyato Kamina4-Dec-04 23:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.150520.1 | Last Updated 7 Oct 2004
Article Copyright 2003 by Sumit Kapoor
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid