Code:
private void glassjet_tiff_header (unsigned long xpoints, unsigned long ypoints, FILE *prn_stream) {
unsigned long stripbytecounts = ypoints*xpoints/8;
//tiff header: little-endian, tiff, start-byte von ifd
fprintf(prn_stream,"%c%c%c%c%c%c%c%c",73,73,42,0,8,0,0,0);
//count of ifd-enteries:
fprintf(prn_stream,"%c%c",14,0);
//newsubfiletype:
fprintf(prn_stream,"%c%c%c%c%c%c%c%c%c%c%c%c",254,0,4,0,1,0,0,0,0,0,0,0);
//ImageWidth:
fprintf(prn_stream, "%c%c%c%c%c%c%c%c",0,1,4,0,1,0,0,0);
fwrite(&xpoints, 1,4,prn_stream);
//ImageLength:
fprintf(prn_stream,"%c%c%c%c%c%c%c%c",1,1,4,0,1,0,0,0);
fwrite(&ypoints, 1,4,prn_stream);
//BitsPerSample:
fprintf(prn_stream,"%c%c%c%c%c%c%c%c%c%c%c%c",2,1,3,0,1,0,0,0,1,0,0,0);
//Compression:
fprintf(prn_stream,"%c%c%c%c%c%c%c%c%c%c%c%c",3,1,3,0,1,0,0,0,1,0,0,0);
//PhotometricInterpretation:
fprintf(prn_stream,"%c%c%c%c%c%c%c%c%c%c%c%c",6,1,3,0,1,0,0,0,0,0,0,0);
//StripOffsets:
fprintf(prn_stream,"%c%c%c%c%c%c%c%c%c%c%c%c",17,1,4,0,1,0,0,0,198,0,0,0);
//StripByteCounts:
fprintf(prn_stream, "%c%c%c%c%c%c%c%c",23,1,4,0,1,0,0,0);
fwrite(&stripbytecounts,1,4,prn_stream);
//SamplesPerPixel:
fprintf(prn_stream,"%c%c%c%c%c%c%c%c%c%c%c%c",21,1,3,0,1,0,0,0,1,0,0,0);
//RowsPerStrip: same like ImageLength
fprintf(prn_stream, "%c%c%c%c%c%c%c%c",22,1,4,0,1,0,0,0);
fwrite(&ypoints, 1,4,prn_stream);
//XResolution:
fprintf(prn_stream,"%c%c%c%c%c%c%c%c%c%c%c%c",26,1,5,0,1,0,0,0,182,0,0,0);
//YResoultion:
fprintf(prn_stream,"%c%c%c%c%c%c%c%c%c%c%c%c",27,1,5,0,1,0,0,0,190,0,0,0);
//PlanarConfiguration:
fprintf(prn_stream,"%c%c%c%c%c%c%c%c%c%c%c%c",28,1,3,0,1,0,0,0,1,0,0,0);
//ResolutionUnit:
fprintf(prn_stream,"%c%c%c%c%c%c%c%c%c%c%c%c",40,1,3,0,1,0,0,0,2,0,0,0);
//next page (next IFD): 0 for no futher page
fprintf(prn_stream,"%c%c%c%c",0,0,0,0);
//byte offset 182: X-Resolution
fprintf(prn_stream,"%c%c%c%c%c%c%c%c",26,94,55,0,16,39,0,0);
//byte offset 190: Y-Resolution
fprintf(prn_stream,"%c%c%c%c%c%c%c%c",136,124,55,0,16,39,0,0);
}
die tiff-doku gibts unter:
Lesezeichen