结论:

  QImage构造函数,既可以加载内存图像数据,也可以加载二进制文件数据

  loadFromData成员函数,只能加载二进制文件数据

loadFromData Qt帮助文档说明

编写测试代码验证

QImage m_img = QImage("D:1.jpg");
void Widget::on_pushButton_clicked()
{
// 数据一:图像内存数据
uchar* data = (uchar*)m_img.bits(); // 图像数据
int data_len = m_img.bytesPerLine() * m_img.height(); // 图像数据的长度 // 数据二:图像二进制数据
QByteArray array;
QBuffer buf(&array);
buf.open(QIODevice::WriteOnly);
m_img.save(&buf, "JPG"); // 测试一:使用QImage构造函数加载图像
// QImage(const uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)
QImage img_1(data,m_img.width(),m_img.height(),QImage::Format_RGB32);
qDebug() << "image 1:" << img_1.isNull();
img_1.save("D:res_1.jpg"); // 测试二:使用成员函数loadFromData加载图像(加载内存数据)
// loadFromData(const uchar *data, int len, const char *format = nullptr)
QImage img_2;
img_2.loadFromData(data, data_len, "JPG");
qDebug() << "image 2:" << img_2.isNull();
img_2.save("D:res_2.jpg"); // 测试三:使用成员函数loadFromData加载图像(加载二进制文件数据)
// loadFromData(const uchar *data, int len, const char *format = nullptr)
QImage img_3;
img_3.loadFromData((uchar*)array.data(), array.length());
qDebug() << "image 3:" << img_3.isNull();
img_3.save("D:res_3.jpg");
}

QImage:使用QImage构造函数加载图像和使用成员函数loadFromData加载图像的区别的更多相关文章

  1. 在类成员函数后面加const

    在看开源代码时,经常会看到在类的成员函数后面加const,之前了没有太关注过,近来闲来无事,就想起这件事,网上查了一下,大概明白了是怎么回事,这里引用CSDN愽文里的段话:“编译器会自动给每一个函数加 ...

  2. 成员变量和成员函数前加static的作用?

    成员变量和成员函数前加static的作用?答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数.分别用来反映类的状态.比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作 ...

  3. 12.C++-构造函数与析构函数调用顺序,const成员函数,const对象

    单个对象创建时,构造函数的调用顺序 1.首先判断该对象的类是否拥有父类,若有则先调用父类的构造函数 2.判断该对象的成员是否是其它类的成员,若是则调用成员变量的构造函数(调用顺序和声明顺序相同) 3. ...

  4. 成员函数后面加const,没有const,以及使用的区别

    函数后面加const 编译器会自动给每一个函数加一个this指针.在一个类的函数后面加上const后,就表明这个函数是不能改变类的成员变量的(加了mutable修饰的除外,后面有讲).实际上,也就是对 ...

  5. 类成员函数后边加const

    本文主要整理自stackoverflow上的一个对问题Meaning of “const” last in a C++ method declaration?的回答. 测试1 对于下边的程序,关键字c ...

  6. c++类成员函数后边加const是为什么?

    时间是让人猝不及防的东西,晴是有风阴时有雨,争不过朝夕,又念着往昔,偷走了青丝却留住一个你 #include <iostream> #include <string> usin ...

  7. python类内部调用自己的成员函数必须加self

    class A: def a(self): print("hello world") def b(self): return self.a() 上面的self.a()中self是不 ...

  8. C++ 类 & 对象-类成员函数-类访问修饰符-C++ 友元函数-构造函数 & 析构函数-C++ 拷贝构造函数

    C++ 类成员函数 成员函数可以定义在类定义内部,或者单独使用范围解析运算符 :: 来定义. 需要强调一点,在 :: 运算符之前必须使用类名.调用成员函数是在对象上使用点运算符(.),这样它就能操作与 ...

  9. (转)函数后面加const--C++ const成员函数

    类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变. 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于 ...

  10. C++基础-4-封装(构造函数与析构函数,深拷贝与浅拷贝,静态成员,this,友元,const修饰成员函数)

    4. 封装 4.1.1 封装的意义 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 con ...

随机推荐

  1. 第136篇:动画API:setInterval 与 requestAnimationFrame的区别

    好家伙,书接上文   function animate() { //请求-动画-框架 requestAnimationFrame( animate ); //改变正方体在场景中的位置,让正方体动起来 ...

  2. DataGear数据可视化分析平台介绍

    DataGear 是一款开源免费的数据可视化分析平台,自由制作任何您想要的数据看板,支持接入SQL.CSV.Excel.HTTP接口.JSON等多种数据源. 系统特点: 友好的数据源接入 支持运行时接 ...

  3. 浅入Kubernetes(13):dashboard、api、访问配置

    目录 Kubectl 命令大全 安装 Kubernetes-Dashboard RESTful API 鉴权 注解 Pod YAML 结构 配置 Kubectl 命令大全 在前面,我们学习到了一些 K ...

  4. 利用Linux自动编译Vivado工程

    https://codetd.com/article/12458043. 利用Linux自动编译Vivado工程

  5. C++socket中select函数

    文章参考 https://www.cnblogs.com/shmilxu/p/4835873.html

  6. async await $api vue

    async getDataNew () { const res = await this.$api('apiPath') if (res && res.status === 20) { ...

  7. DWR之入门实例(一)

    DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ...

  8. 17_详解YUV

    本文的主角是多媒体领域非常重要的一个概念:YUV. 简介 YUV,是一种颜色编码方法,跟RGB是同一个级别的概念,广泛应用于多媒体领域中. 也就是说,图像中每1个像素的颜色信息,除了可以用RGB的方式 ...

  9. python script 编写摘要(一)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  10. PAT 甲级1005【1005 Spell It Right】

    用JAVA可以用BigInteger解决. import java.io.BufferedReader; import java.io.IOException; import java.io.Inpu ...