ciao
che voi sappiate, c'è un modo per analizzare una jpeg o un qualsiasi file bitmap in modo da sapere i codice esadecimale (o la combinazione di colori RGB) o un qualsiasi identificativo per capire il colore del pixel (x,y)?
ciao
che voi sappiate, c'è un modo per analizzare una jpeg o un qualsiasi file bitmap in modo da sapere i codice esadecimale (o la combinazione di colori RGB) o un qualsiasi identificativo per capire il colore del pixel (x,y)?
"durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."
http://www.kumbe.it
Per i BMP è facile...
Ecco un esempio che visualizza l'header di un file .bmp :
Per ulteriori info sul formato, se macini l'inglese:codice:#include <iostream> #include <fstream> #include <string> #include <windows.h> using namespace std; void showchars(long int dati); void main() { // Chiede il nome del file string fname; cout << "Nome del file .bmp da aprire? "; cin >> fname; // Apre il file e controlla se è valido ifstream fin; fin.open(fname.c_str(),ios::in | ios::binary); if(!fin) { cout << "Mi dispiace, ma il file non sembra essere valido!"<<endl; return; } BITMAPFILEHEADER bmfh; BITMAPINFOHEADER bmih; fin.read((char *) &bmfh, sizeof(BITMAPFILEHEADER)); fin.read((char *) &bmih, sizeof(BITMAPINFOHEADER)); // Dice cosa fa cout << "Informazioni sul file BMP:" << endl; // Lunghezza header file cout << "Lunghezza header file:\t" << sizeof(BITMAPFILEHEADER) << endl; // Tipo file cout << "Tipo:\t"; showchars(bmfh.bfType); cout << endl; // Dimensioni file cout << "Dimensioni:\t" << bmfh.bfSize << endl; // Informazioni riservate cout << "Informazioni riservate 1:\t" << bmfh.bfReserved1 << endl; cout << "Informazioni riservate 2:\t" << bmfh.bfReserved2 << endl; // Bytes di offset cout << "Bytes di offset:\t" << bmfh.bfOffBits << endl; cout << endl; // Lunchezza header informazioni cout << "Lunghezza header informazioni:\t" << sizeof(BITMAPINFOHEADER) << " = " << bmih.biSize << endl; // Larghezza e altezza immagine cout << "Larghezza file in pixel:\t" << bmih.biWidth << endl; cout << "Altezza file in pixel:\t" << bmih.biHeight << endl; // Piani cout << "Piani:\t" << bmih.biPlanes << endl; // Bit per pixel cout << "Bit per pixel:\t" << bmih.biBitCount << endl; // Compressione switch(bmih.biCompression) { case BI_RGB: cout << "Non ha compressione." << endl; break; case BI_RLE8: cout << "Compressione per file a 8 bit per pixel" << endl; break; case BI_RLE4: cout << "Compressione per file a 4 bit per pixel" << endl; break; }; // Grandezza compressa facoltativa if(bmih.biSizeImage != 0) cout << "Grandezza immagine compressa:\t" << bmih.biSizeImage << endl; // Risoluzione cout << "Risoluzione orrizzontale (pixel per metro):\t" << bmih.biXPelsPerMeter << endl; cout << "Risoluzione verticale (pixel per metro):\t" << bmih.biYPelsPerMeter << endl; cout << "Colori palette:\t" << bmih.biClrUsed << endl; cout << "Colori palette importanti:\t" << bmih.biClrImportant << endl; } void showchars(long int dati) { int i; for(i=0; i<4; i++) { cout << char(dati); dati >>= 8; } }
http://www.wotsit.org/
ciao
ti ringrazio della tua risposta
ora ti faccio un'altra domanda!
se io volessi creare una bitmap avendo a disposizione il colore di tutti i pixel...cosa dovrei fare?
ad esempio vorrei fare una bitmap da 256x256 e poi disegnare alcuni pixel di nero, infine salvare il file su hard disk
come posso fare?
thnks
"durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."
http://www.kumbe.it
Memorizzi i colori in una matrice e poi scrivi il file nel formato bmp (le specifiche le trovi sul link che ti ho dato)
Programmi che fanno di più di quello che ho postato non li ho fatti...