ifstream读取图片,Qt载入显示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ifstream读取图片,Qt载入显示相关的知识,希望对你有一定的参考价值。
应用场景:
需要显示图片的同时也需要图片的二进制数据。例如需要将图片作为二进制数据转化为string发送,而同时需要显示图片。
主要思路:
将图片文件用二进制格式读入,然后将二进制数据加载到 QImage 中,达到显示效果。让后根据需要,将读取到的二进制数据自行做处理。
主要代码:
//begin std::ifstream fileInput("F:\\\\VSprojects\\\\DChat\\\\1.jpg", std::ios_base::binary); //获取文件大小 fileInput.seekg(0, std::ios_base::end); const size_t maxSize = fileInput.tellg(); //重置文件指针 fileInput.seekg(0, std::ios_base::end); //读取图片文件 char *picBin = new char[maxSize]; fileInput.read(picBin, maxSize); //载入二进制数据初始化Qimage QImage img; img.loadFromData((uchar*)picBin, maxSize); //显示图片QImage QDialog *newDialog = new QDialog(); QLabel *picLabel = new QLabel(newDialog); picLabel->setPixmap(QPixmap::fromImage(img)); newDialog->show(); newDialog->setVisible(true); //复制图片 std::ofstream fileOutput("F:/VSprojects/DChat/2.jpg", std::ios_base::binary); fileOutput.write(picBin, maxSize); fileInput.close(); fileOutput.close(); //end
其他说明:
std::ifstream::seekg(streampos pos); //设置指针位置。
std::ifstream::seekg(strrampoff off, std::ios_base::seekdir way); //设置指针起始位置以及偏移量, off为偏移量。
参考:http://www.cplusplus.com/reference/istream/istream/seekg/
结果截图:
最后:
如有错漏,欢迎指点。。
以上是关于ifstream读取图片,Qt载入显示的主要内容,如果未能解决你的问题,请参考以下文章
机器学习进阶-图像基本处理-视频的读取与处理 1.cv2.VideoCapture(视频的载入) 2.vc.isOpened(载入的视频是否可以打开) 3.vc.read(视频中一张图片的读取)