c++ - 从 QByteArray 使用 libjpeg 加载 jpeg 图像纹理

标签 c++ qt jpeg libjpeg qbytearray

您好,我有一个从 QNetworkReply 获得的 jpeg 图像的 QByteArray。我到处都看到从文件中读取 jpeg 图像并像这样解压缩,

FILE * infile;
......
if ((infile = fopen(filename, "rb")) == NULL) 
{
     fprintf(stderr, "can't open %s\n", filename);
     exit(1);
}
jpeg_stdio_src(&cinfo, infile);
jpeg_read_header(&cinfo, 0);
jpeg_start_decompress(&cinfo);

然后

while (scan lines remain to be read)
      jpeg_read_scanlines(...);

但是我如何从 QByteArray 而不是文件/stdio 流中读取它呢?

最佳答案

使用

void jpeg_mem_src(j_decompress_ptr cinfo, unsigned char * inbuffer,
              unsigned long insize);

代替 jpeg_stdio_src

 QByteArray qarr;

 jpeg_decompress_struct cinfo;
 jpeg_mem_src(&cinfo, qarr.data(), qarr.size());
 jpeg_read_header(&cinfo, TRUE);
 jpeg_start_decompress(&cinfo);

 /// etc..

关于c++ - 从 QByteArray 使用 libjpeg 加载 jpeg 图像纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14232856/

相关文章:

C++线程问题——设置一个值表示线程已经结束

c++ - QDateTime : add current year automatically

c++ - 将 ioctl() 调用从 unix 移植到 linux,FIONBIO 出错

c++ - Qt:Centos 6.7 session 管理错误和符号查找错误

c++ - Qdialog.exec() 是如何返回的

c# - 使用 C# 创建缩略图

python - 使用OpenCV和Winsock发送JPG图像(C++中的客户端,Python中的服务器)

c++ - 如何在 Qt 中合并两个 QJsonObjects?

c++ - QByteArray 获取第n个元素的地址

memory - jpeg无损转换-内存消耗?