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/

结果截图:

最后:

如有错漏,欢迎指点。。

时间: 2024-08-24 01:15:03

ifstream读取图片,Qt载入显示的相关文章

从blob字段读取图片 在浏览器显示

public byte[] GetProImg(string JID) { byte[] Buffer = null; using (OracleConnection conn = new OracleConnection(Pub.ConnectionString)) { try { conn.Open(); OracleCommand cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "select PDC_

ajax读取图片后排列问题(先加载完图片再排列)

网上找了个瀑布流的图片排列插件.从数据库读取图片路径后显示时出现了位置重叠问题. 1 $.ajax({ 2 type: "POST", 3 url: "index.aspx", 4 data: { 'action': 'SelectImage'}, 5 dataType: "json", 6 success: function (result) { 7 var imgpanel = $("#imgitem"); 8 var i

MVC中根据后台绝对路径读取图片并显示在IMG中

数据库存取图片并在MVC3中显示在View中 根据路径读取图片: 1 byte[] img = System.IO.File.ReadAllBytes(@"d:\xxxx.jpg"); 简介:在有些情况下需要将图片转换为二进制流存放在数据库中,当显示时再从数据库中读出来显示在界面上. 本文简单介绍数据库中图片的存取方法,并在MVC3中显示在Razor视图中.仅供初学者参考学习. 1. 将图片转换为二进制流 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1

C#(WinForm)上传图片保存到数据库和从数据库读取图片显示到窗体

1 //浏览图片 2 3 private void btnUp_Click(object sender, EventArgs e) 4 5 { 6 7 OpenFileDialog ofd = new OpenFileDialog(); 8 9 ofd.Title = "选择要上传的图片"; 10 11 ofd.Filter = "All Files(*.*)|*.*|位图(*.bmp)|*.bmp|JPEG(*.jpg)|*.jpg"; 12 13 ofd.Sho

【转载】MySQL存入图片+Qt读入读出数据库中的图片

/* Time: 2017.01.02 -- 2017.01.04 * Author: WJ * Function:连接数据库,从数据库中读取图片并显示(已成功) */ [参考链接] MySQL存入图片+Qt读入读出数据库中的图片 - lpdpzc的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/lpdpzc/article/details/41915835 [主要代码] void MainWindow::on_ShowImage_clicked() { QS

Android中读取图片EXIF元数据之metadata-extractor的使用

一.引言及介绍 近期在开发中用到了metadata-extractor-xxx.jar 和 xmpcore-xxx.jar这个玩意, 索性查阅大量文章了解学习,来分享分享. 本身工作也是常常和处理大图片打交道,摸索摸索也是多多益善. 首先介绍一下什么是EXIF.EXIF是 Exchangeable Image File 的缩写,这是一种专门为数码相机照片设定的格式.这样的格式能够用来记录数字照片的属性信息,如相机的品牌及型号.相片的拍摄时间.拍摄时所设置的光圈大小.快门速度.ISO等信息.除此之

[OpenCV] 1、读取图片

>_<" 安装及配置请看http://www.cnblogs.com/zjutlitao/p/4042074.html >_<" 这篇是一个简单的在VS2012里运行的openCV读取图片并显示的简单例子 1 #include <stdio.h> 2 #include <opencv2/opencv.hpp> 3 using namespace std; 4 using namespace cv; 5 int main(int argc,

[转]asp.net mvc 从数据库中读取图片

本文转自:http://www.cnblogs.com/mayt/archive/2010/05/20/1740358.html 首先是创建一个类,继承于ActionResult,记住要引用System.Web.Mvc命名空间,如下: public class ImageResult : ActionResult { public ImageFormat ContentType { get; set; } public Image image { get; set; } public strin

(源代码分析)Android-Universal-Image-Loader (图片异步载入缓存库)的使用配置

转载请注明出处:http://blog.csdn.net/u011733020 前言: 在Android开发中,对于图片的载入能够说是个老生常谈的问题了,图片载入是一个比較坑的地方.处理不好,会有各种奇怪的问题,比方 载入导致界面卡顿.程序crash. 因此 怎样高效的载入大量图片.以及怎样载入大分辨率的图片到内存.是我们想要开发一款优质app时不得不去面对与解决的问题. 通常开发中,我们仅仅有两种选择:① 使用开源框架  ②自己去实现处理图片的载入与缓存. 通常一開始让我们自己去写,我们会无从