Ho un certo codice che legge l'intestazione di un file bitmap e stampa le informazioni a schermo.
Il problema è che se leggo i campi della struttura uno ad uno funziona:
se invece leggo tutto con una fread, mi sballa i valori:codice:/*1 caso: Funziona*/ fread(&bmp->header.type, sizeof(short), 1, bmp_file); fread(&bmp->header.size, sizeof(int), 1, bmp_file); fread(&bmp->header.reserved1, sizeof(short), 1, bmp_file); fread(&bmp->header.reserved2, sizeof(short), 1, bmp_file); fread(&bmp->header.offset, sizeof(int), 1, bmp_file); fread(&bmp->infoHeader.InfoHeader_size, sizeof(int), 1, bmp_file); fread(&bmp->infoHeader.width, sizeof(int), 1, bmp_file); fread(&bmp->infoHeader.height, sizeof(nt), 1, bmp_file); fread(&bmp->infoHeader.bitPlanes, sizeof(short), 1, bmp_file); fread(&bmp->infoHeader.bitCount, sizeof(short), 1, bmp_file); fread(&bmp->infoHeader.compressionType, sizeof(int), 1, bmp_file); fread(&bmp->infoHeader.ImageData_size, sizeof(int), 1, bmp_file); fread(&bmp->infoHeader.hPixelPerMeter, sizeof(int), 1, bmp_file); fread(&bmp->infoHeader.vPixelPerMeter, sizeof(int), 1, bmp_file); fread(&bmp->infoHeader.numberOfColors, sizeof(int), 1, bmp_file); fread(&bmp->infoHeader.numberOfImportantColors, sizeof(int), 1, bmp_file);
Le strutture sono dichiarate come:codice:/*2 caso: Non funziona*/ fread(&bmp->header, sizeof(BMP_Header), 1, bmp_file); fread(&bmp->infoHeader, sizeof(BMP_InfoHeader), 1, bmp_file);
L'output nel primo caso (funzionante) è:codice:typedef struct{ short type; int size; short reserved1; short reserved2; int offset; }BMP_Header; typedef struct { int InfoHeader_size; int width; int height; short bitPlanes; short bitCount; int ImageData_size; int compressionType; int hPixelPerMeter; int vPixelPerMeter; int numberOfColors; int numberOfImportantColors; }BMP_InfoHeader; typedef struct { BMP_Header header; BMP_InfoHeader infoHeader; }BMP;
che è corretto.codice:TotalSize: 60 Size: 16 FileSize: 332374 Type: 19778 Reserved Bytes: 0 0 Offset: 54 ------------BMP_InfoHeader---------- Size: 40 Info Header Size: 40 Width: 330 Height: 335 BitPlanes: 1 BitCount: 24 Compression Type: 0 Size of Image Data: 332320 Horizontal Pixel Per Meter: 12008 Vertical Pixel Per Meter: 12008 Number Of Used Colors: 0 Number Of Important Used Colors: 0
Nel secondo caso (non funzionante); è:
Perchè ?codice:TotalSize: 56 Size: 16 FileSize: 5 Type: 19778 Reserved Bytes: 0 54 Offset: 0 ------------BMP_InfoHeader---------- Size: 40 Info Header Size: 21626880 Width: 21954560 Height: 65536 BitPlanes: 24 BitCount: 0 Compression Type: 786956293 Size of Image Data: 304087040 Horizontal Pixel Per Meter: 786956288 Vertical Pixel Per Meter: 0 Number Of Used Colors: 0 Number Of Important Used Colors: 826146816![]()

Rispondi quotando
