Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
  };
}
Exemplo n.º 3
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;
}