int Orient( char *filename, int setflags, int orientation ) { PBITMAP tiff; tiff = ReadTiff( filename, 0 ); if ( !tiff ) { fprintf( stderr, "Can't read %s\n", filename ); return 1; } if ( tiff->sampleformat!=BITMAP_UINT8 && tiff->sampleformat!=BITMAP_UINT16 && tiff->sampleformat!=BITMAP_IEEE ) { fprintf( stderr, "TIFF file %s is not a \"r\", \"rgb\", \"rgba\" or IEEE image\n", filename ); goto Error; } if (setflags) { tiff->orientation = orientation; } else { tiff = OrientBitmap( tiff, orientation ); } if (WriteTiff( tiff, filename )) { fprintf( stderr, "Can't write file: \"%s\"\n", filename ); goto Error; } DestroyBitmap( tiff ); return 0; Error: DestroyBitmap( tiff ); return 1; }
int WriteImage(const char * filename, const std::vector<unsigned char> & ptr, int w, int h, int depth){ Format f = GetFormat(filename); switch (f) { case Pnm: return WritePnm(filename, ptr, w, h, depth); case Png: return WritePng(filename, ptr, w, h, depth); case Jpg: return WriteJpg(filename, ptr, w, h, depth); case Tiff: return WriteTiff(filename, ptr, w, h, depth); default: return 0; }; }
int main(int argc, char **argv) { PBITMAP tiff; uint32 n; uint8 *p8; uint16 *p16; auto uint32 i,j,x,y; if ( argc < 2 || (argc > 1 && argv[1][0]=='-') ) { /* User tried to specify an option, so just print help text. */ printf( "tiffinvert tiff_filename1 ...\n" \ " tiff_filename1 ... TIFF file(s) to overwrite with an\n" \ " an inverted version of their image.\n" ); return 1; } for ( i=1; i<argc; i++ ) { tiff = ReadTiff( argv[i], 0 ); if ( !tiff ) { fprintf( stderr, "Can't read %s\n", argv[i] ); return 1; } if ( tiff->sampleformat!=BITMAP_UINT8 && tiff->sampleformat!=BITMAP_UINT16 ) { fprintf( stderr, "TIFF file %s is not an \"r\", \"rgb\" or \"rgba\" image\n", argv[i] ); goto Skip; } if ( tiff->sampleformat==BITMAP_UINT8 ) { n = tiff->yres * tiff->rowbytes; p8 = tiff->pbits; for ( j=0; j<n; j++ ) *p8++ = 0xff - *p8; } else /* tiff->sampleformat==BITMAP_UINT16 */ { n = tiff->xres * tiff->nsamples; p16 = (uint16*)tiff->pbits; for ( y=0; y<tiff->yres; y++ ) for ( x=0; x<n; x++ ) *p16++ = 0xffff - *p16; } if (WriteTiff( tiff, argv[i] )) { fprintf( stderr, "Can't write file: \"%s\"\n", argv[i] ); goto Error; } Skip: DestroyBitmap( tiff ); } return 0; Error: DestroyBitmap( tiff ); return 1; }