View Full Version : [C++] Altezza e lunghezza di un'immagine JPG
Ho disperato bisogno di determinare a tempo di esecuzione lunghezza ed altezza (in piexel) di un'immagine JPEG... (dovrò compilare con il Visual C++ 6.0)
Grazie a ki saprà darmi una mano.... ;)
Originariamente inviato da Loprix
Ho disperato bisogno di determinare a tempo di esecuzione lunghezza ed altezza (in piexel) di un'immagine JPEG... (dovrò compilare con il Visual C++ 6.0)
Grazie a ki saprà darmi una mano.... ;)
Prova un po questo:
http://www.tonec.com/download4.html
Originariamente inviato da mjordan
Prova un po questo:
http://www.tonec.com/download4.html
grazie ma... ehm... volevo evitare i controlli ActiveX (soprattutto quelli A PAGAMENTO....)
Se ne hai voglia: http://www.wotsit.org/download.asp?f=itu-1150PDF
Originariamente inviato da cionci
Se ne hai voglia: http://www.wotsit.org/download.asp?f=itu-1150PDF
ehm... il link diretto nn va (sai, vogliono ke si guardino i loro banner pubblicitari...) cmq. ho trovato lo zip, ora gli dò un'occhiata, ti faccio sapere... grazie, 6 er mejo.......:cool: :cool:
OK, ho letto le specifiche del formato ed ho scritto (ahimé) tutto solo la funzione... La riporto sperando possa essere utile a qualcun altro... :D
La funzione ritorna 0 in caso di successo, un codice di errore altrimenti.
#include <stdio.h>
#define SUCCESS 0x00
#define IO_ERR 0x01
#define BAD_FORMAT 0x02
inline int test(unsigned short c){
return (c == 0xC0 ||
c == 0xC1 ||
c == 0xC2 ||
c == 0xC3 ||
c == 0xC5 ||
c == 0xC6 ||
c == 0xC7 ||
c == 0xC9 ||
c == 0xCA ||
c == 0xCB ||
c == 0xCD ||
c == 0xCE ||
c == 0xCF );
}
int GetJPEGSize(char* filename, short& X, short& Y){
const int SIZE = 300; // dimensione del buffer
int ret, n = 0;
unsigned char buff[SIZE]; // buffer di lettura
X = Y = 0;
FILE * pFile = fopen(filename,"rb");
if (pFile == NULL)
return IO_ERR;
ret = fread (buff,1,SIZE,pFile);
ret -= 8; // SOF deve essere nei primi (ret-8) bytes
fclose (pFile);
// cerco il flag SOF: Y si trova dopo 5 bytes e X dopo 7
while (n<ret && !(buff[n]== 0xFF && test(buff[n+1]))){
n++;
}
if (n>=ret) return BAD_FORMAT; // FLAG SOF non trovato
Y = (buff[n+5]<<8)|(buff[n+6]);
X = (buff[n+7]<<8)|(buff[n+8]);
return SUCCESS;
}
Bravissimo. Così si fa ;) Sei un grande ;)
Originariamente inviato da cionci
Grande ;)
Beh... in rete non ho trovato nulla già pronto... :( cmq. fanno sempre piacere i complimenti del :ave: maestro
Originariamente inviato da mjordan
Bravissimo. Così si fa ;) Sei un grande ;)
Ma mi state prendendo in giro?? :wtf:
No...bravo davvero... Si studia e poi si scrive il codice...magari per te è normale...ma non per qualche persona che frequenta questo forum :)
Originariamente inviato da cionci
No...bravo davvero... Si studia e poi si scrive il codice...magari per te è normale...ma non per qualche persona che frequenta questo forum :)
Beh... senza lo studio non si fa molta strada... Programmare non vuol dire solo mettere insieme 4 funzioni scritte da altri... :rolleyes:
Buona serata a tutti... ho bisogno di uscire, le DirectShow® delle DirectX 9.0 mi stanno facendo impazzireeeee!!!!! :ncomment:
Ciauz...
Originariamente inviato da Loprix
Beh... senza lo studio non si fa molta strada... Programmare non vuol dire solo mettere insieme 4 funzioni scritte da altri... :rolleyes:
Buona serata a tutti... ho bisogno di uscire, le DirectShow® delle DirectX 9.0 mi stanno facendo impazzireeeee!!!!! :ncomment:
Ciauz...
:mano:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.