您好,我有一个从 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/