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

标签 c++ c jpeg

<分区>

你知道有什么好的图像库可以在内存中获取 JPEG 图像的大小吗?我只需要获取图像的大小。如果可能的话,我希望它只是标题。 如果我没记错的话,boost::gil 似乎需要第三方库 (libjpeg)。

最佳答案

使用下面的代码,我们可以验证给定的文件是 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);

关于用于获取 JPEG 图像大小的 C++ 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17847171/

相关文章:

c++ - 如何在 C 套接字中捕获 "connection reset by peer"错误?

c 函数返回一个结构体指针

c# - MemoryStream (pdf) 到 Ghostscript 到 MemoryStream (jpg)

c - 如何在 C GTK 中检测多个按键?

c - 在C中的函数中传递指向数组的指针

.net - WPF:使用 JPEG 压缩的 TIFF 图像?

c++ - 读取 JPEG,调整大小并将其保存到磁盘

c++ - 在 C++ 中定义类似 Matlab 的 .* 运算符?

c++ - 带空括号的默认构造函数

c++ - 我正在用 placement new 做一些时髦的事情,但事情都失败了。解决方法?