码迷,mamicode.com
首页 > 其他好文 > 详细

ifstream读取图片,Qt载入显示

时间:2016-06-03 18:59:14      阅读:862      评论:0      收藏:0      [点我收藏+]

标签:

应用场景:

需要显示图片的同时也需要图片的二进制数据。例如需要将图片作为二进制数据转化为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载入显示

标签:

原文地址:http://www.cnblogs.com/yicoder/p/stdio_read_pic_qt.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!