用于获取JPEG图像大小的C ++库

时间:2013-07-25 00:44:34

标签: c++ c jpeg

你知道有什么好的成像库可以在内存中获取JPEG图像的大小吗?我只需要获得图像的大小。如果可能的话,我更喜欢它只是标题。 如果我记得很好的话,看起来boost :: gil需要第三方库(libjpeg)。

1 个答案:

答案 0 :(得分: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);