| 1 | Frank, |
| 2 | |
| 3 | I attached a file that uses RGBA interface (tif_getimage.c) to read a tiff |
| 4 | file and convert to a DIB. It's advantage is that it is easy to read *any* |
| 5 | tiff file suported by libtiff and easily convert it to a DIB. The disadvantage |
| 6 | is that bilevel (B&W) bitmaps (and all other non-rgba images) are also |
| 7 | converted to RGBA, thus taking up 32x as much memory as needed (4 bytes per |
| 8 | pixel, rather than 1 bit). I read tiff files, but don't need to |
| 9 | write them. And my files are typically small, so the overhead is mostly |
| 10 | inconsequential. But for bilevel images, I overrode the get() and put() |
| 11 | routines of the RGBA interface to just copy the data from the input raster |
| 12 | to the output raster, rather than expanding out to full 32 bit format. It |
| 13 | would be nice if there were a simple way to handle all palletized images, |
| 14 | but that would take more custom routines, and it's not that important to me. |
| 15 | |
| 16 | Usage: |
| 17 | |
| 18 | m_pDIB = (PBITMAPINFOHEADER)::ReadTIFF(pathName); |
| 19 | if (m_pDIB != 0) { |
| 20 | m_format = IMAGETYPE_TIF; |
| 21 | } |
| 22 | |
| 23 | This is intended as Win32, but the modifications for new get() and put() |
| 24 | routines may be independent of platform. |
| 25 | |
| 26 | Thanks for your work supporting the forum and the library! |
| 27 | |
| 28 | Regards, |
| 29 | |
| 30 | Mark James |
| 31 | mark@james.net |