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