用libjpeg从QByteArray加载jpeg图像纹理
Load jpeg image texture with libjpeg from QByteArray
嗨,我有一个QByteArray的jpeg图像,我从QNetworkReply获得。我看到到处都是从文件中读取jpeg图像并像这样解压缩,
FILE * infile;
......
if ((infile = fopen(filename, "rb")) == NULL)
{
fprintf(stderr, "can't open %sn", 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..
您不需要使用外部jpeg库:
QByteArray array;
// read data into array here;
QPixmap image;
image.loadFromData(array);
应该足够了。Qt将自动检测图像格式。如果您动态编译应用程序,请记住分发Qt jpeg插件。
相关文章:
- 如何从未签名的char*数组中获取JPEG图像数组
- 意外的摄像头校准结果与JPEG图像和EXIF方向上的OPENCV结果
- 如何使用avcodec从OpenCV::Mat类型的jpeg图像创建视频
- 带有 JPEG 图像的组合框
- 如何在Qt中将Jpeg Base64字符串转换为jpeg图像
- 如何将 JPEG 注释添加到现有的 JPEG 图像文件
- 如何通过串行端口接收 JPEG 图像
- 当使用GDI+创建时,两个具有相同维度的JPEG图像是否具有相同的标头
- 用c++将数组编码为jpeg图像
- 用于获取JPEG图像大小的C++库
- 如何在Qt的主窗口上完全显示jpeg图像
- 从JPEG图像中提取RGB,使用libjpeg c++库
- 使用c++在Qt中添加jpeg图像文件
- 如何从磁盘加载Jpeg图像并创建视频文件?Avi等),而无需在c++中使用opencv
- 使用boost::gil从内存中读取JPEG图像
- Linux CGI Web API -如何在c++下输出二进制JPEG图像
- 解码JPEG图像的快速方法
- 用于将JPEG图像转换为TIFF格式的C, c++或Objective-C代码
- 通过http GET请求接收JPEG图像
- opencv从缓冲区读取jpeg图像