AWARE [SYSTEMS]
AWare Systems, , Home TIFF and LibTiff Mailing List Archive

LibTiff Mailing List

TIFF and LibTiff Mailing List Archive
June 2005

Previous Thread
Next Thread

Previous by Thread
Next by Thread

Previous by Date
Next by Date

Contact

The TIFF Mailing List Homepage
Archive maintained by AWare Systems



New Datamatrix section



Valid HTML 4.01!



Thread

2005.06.29 20:21 "copying jpeg tables", by James Carroll
2005.06.29 20:50 "Solved", by James Carroll

2005.06.29 20:21 "copying jpeg tables", by James Carroll

Hi, 

I'm trying to do an ultra-fast copy of JPEG compressed TIFF tiles from one file 
to another...

tiffcp cheats and decodes each tile, then re-encodes it. I'm hoping to minimize 
the processor time of decoding and re-encoding.

I'm copying all the standard tags, and using ReadRawTile and WriteRawTile to 
transfer the tiles, but I also have to copy some other stuff...  I'm guessing at 
least the JpegTables

How do I copy the JPEG_TABLES?

Portions of my code below... and tiffdump that shows the tables below
that.
 

Thanks,

-Jim

 

..... (lots of tags copied)
    if (TIFFGetField(tifIn, TIFFTAG_TILEWIDTH, &tileWidth))
    {
         TIFFSetField(tifOut, TIFFTAG_TILEWIDTH, tileWidth);
    }
 
    if (TIFFGetField(tifIn, TIFFTAG_TILELENGTH, &tileLength))
    {
         TIFFSetField(tifOut, TIFFTAG_TILELENGTH, tileLength);
    }
 
    // Copy JPEG Tables
???????????????????????????????????????????????
 
    // For each tile, read raw, and write raw
    tdata_t buf;
    ttile_t tile;
 
    buf = _TIFFmalloc(TIFFTileSize(tifIn));
    for (tile = 0; tile < TIFFNumberOfTiles(tifIn); tile++)
    {
        tsize_t tileSize = TIFFReadRawTile(tifIn, tile, buf, (tsize_t) -1);
        TIFFWriteRawTile(tifOut, tile, buf, tileSize);
    }
    _TIFFfree(buf);
 
    TIFFClose(tifIn);
    TIFFClose(tifOut);
 

tiffdump for the image I'm trying to copy:
 
vs00523_p4.tif:
Magic: 0x4949 <little-endian> Version: 0x2a
Directory 0: offset 499632 (0x79fb0) next 0 (0)
ImageWidth (256) SHORT (3) 1<1950>
ImageLength (257) SHORT (3) 1<2188>
BitsPerSample (258) SHORT (3) 3<8 8 8>
Compression (259) SHORT (3) 1<7>
Photometric (262) SHORT (3) 1<6>
Orientation (274) SHORT (3) 1<1>
SamplesPerPixel (277) SHORT (3) 1<3>
PlanarConfig (284) SHORT (3) 1<1>
TileWidth (322) SHORT (3) 1<256>
TileLength (323) SHORT (3) 1<256>
TileOffsets (324) LONG (4) 72<8 1188 7813 20723 38271 53379 59816 60993
62116 70 308 88528 99915 103191 107125 123874 137313 139069 154530 166768 
167906 168969 1 70032 173615 192932 ...>
TileByteCounts (325) LONG (4) 72<1180 6625 12910 17548 15108 6437 1177
1123 8192 18220 11387 3276 3934 16749 13439 1756 15461 12238 1138 1063 1063 
3583 19317 81 35 ...>
347 (0x15b) UNDEFINED (7) 574<0xff 0xd8 0xff 0xdb 00 0x43 00 0x6 0x4 0x5
0x6 0x5 0x4 0x6 0x6 0x5 0x6 0x7 0x7 0x6 0x8 0xa 0x10 0xa ...>
YCbCrSubsampling (530) SHORT (3) 2<2 2>
ReferenceBlackWhite (532) RATIONAL (5) 6<0 255 128 255 128 255>
 
 
the 347 is the tag that shows there are 574 elements in the jpeg tables