0

メモリ内の JPEG 画像のサイズを取得するための優れた画像処理ライブラリを知っていますか? 画像のサイズを取得するだけです。可能であれば、ヘッダーのみにしたいと思います。よく覚えていると、boost::gil にはサードパーティ製のライブラリ (libjpeg) が必要なようです。

4

1 に答える 1

4

次のコードを使用すると、特定のファイルが jpeg 画像ファイルであることを確認でき、画像サイズも取得できます。

int width, height;
FILE *image;
int size, i = 0;
unsigned char *data;

image =fopen("file_name","rb");  // open JPEG image file
if(!image){
   printf("Unable to open image \n");
}
fseek(image,  0,  SEEK_END);
size = ftell(image);
fseek(image,  0,  SEEK_SET);
data = (unsigned char *)malloc(size);
fread(data, 1, size, image);
/* verify valid JPEG header */
if(data[i] == 0xFF && data[i + 1] == 0xD8 && data[i + 2] == 0xFF && data[i + 3] == 0xE0) {
     i += 4;
     /* Check for null terminated JFIF */
     if(data[i + 2] == 'J' && data[i + 3] == 'F' && data[i + 4] == 'I' && data[i + 5] == 'F' && data[i + 6] == 0x00) {
         while(i < size) {
             i++;
             if(data[i] == 0xFF){
                 if(data[i+1] == 0xC0) {
                     height = data[i + 5]*256 + data[i + 6];
                     width = data[i + 7]*256 + data[i + 8];
                     break;
                 }
             }
         }
     }
 } 
 fclose(image);
于 2013-07-25T04:23:47.463 に答える