QImage:使用QImage构造函数加载图像和使用成员函数loadFromData加载图像的区别
结论:
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加载图像的区别的更多相关文章
- 在类成员函数后面加const
在看开源代码时,经常会看到在类的成员函数后面加const,之前了没有太关注过,近来闲来无事,就想起这件事,网上查了一下,大概明白了是怎么回事,这里引用CSDN愽文里的段话:“编译器会自动给每一个函数加 ...
- 成员变量和成员函数前加static的作用?
成员变量和成员函数前加static的作用?答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数.分别用来反映类的状态.比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作 ...
- 12.C++-构造函数与析构函数调用顺序,const成员函数,const对象
单个对象创建时,构造函数的调用顺序 1.首先判断该对象的类是否拥有父类,若有则先调用父类的构造函数 2.判断该对象的成员是否是其它类的成员,若是则调用成员变量的构造函数(调用顺序和声明顺序相同) 3. ...
- 成员函数后面加const,没有const,以及使用的区别
函数后面加const 编译器会自动给每一个函数加一个this指针.在一个类的函数后面加上const后,就表明这个函数是不能改变类的成员变量的(加了mutable修饰的除外,后面有讲).实际上,也就是对 ...
- 类成员函数后边加const
本文主要整理自stackoverflow上的一个对问题Meaning of “const” last in a C++ method declaration?的回答. 测试1 对于下边的程序,关键字c ...
- c++类成员函数后边加const是为什么?
时间是让人猝不及防的东西,晴是有风阴时有雨,争不过朝夕,又念着往昔,偷走了青丝却留住一个你 #include <iostream> #include <string> usin ...
- python类内部调用自己的成员函数必须加self
class A: def a(self): print("hello world") def b(self): return self.a() 上面的self.a()中self是不 ...
- C++ 类 & 对象-类成员函数-类访问修饰符-C++ 友元函数-构造函数 & 析构函数-C++ 拷贝构造函数
C++ 类成员函数 成员函数可以定义在类定义内部,或者单独使用范围解析运算符 :: 来定义. 需要强调一点,在 :: 运算符之前必须使用类名.调用成员函数是在对象上使用点运算符(.),这样它就能操作与 ...
- (转)函数后面加const--C++ const成员函数
类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变. 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于 ...
- C++基础-4-封装(构造函数与析构函数,深拷贝与浅拷贝,静态成员,this,友元,const修饰成员函数)
4. 封装 4.1.1 封装的意义 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 con ...
随机推荐
- ZYNQ核心板及其底板开源啦!
Hello-FPGA ZYNQ 设计开源啦! 开源ZYNQ核心板 + 底板 硬件设计.软件设计,软件设计使用裸机演示,演示了如何使用AXI DMA等关键dma 模块 欢迎加QQ 讨论 94755958 ...
- 在ABP的模块解决方案中使用BootstrapBlazor
1.为Study.Trade.Blazor.Server.Host引入两个包 成功后效果如下: 2.修改Study.Trade.Blazor.Server.Host的Pages目录下的_Host.cs ...
- ABP开发需要用到的命令
0.命令行在哪里执行? 在Visual Studio的"解决方案资源管理器"的解决方案或者项目上点鼠标右键,选择"在终端中打开". 1.安装abp的命令行 官网 ...
- 【Azure 应用服务】更便捷的方式抓取Azure App Service for Windows的网络包
问题描述 在之前的一篇博文中,介绍了在App Service中抓取网络日志: 抓取Windows的网络包:[应用服务 App Service]App Service中抓取网络日志 抓取Linux的网络 ...
- c++复习笔记——STL(vector)
c++-----STL容器系列(1) vector 1 介绍 Vector是stl容器中一种常见的容器 ,基本和数组类似,其大小(size)可变,常用于数组长度不确定时来代替数组,当数据超过vecto ...
- spring MVC常用配置模板
第一个 log4j 最简化配置,复制可以,新建一个 log4j.xml <?xml version="1.0" encoding="UTF-8" ?&g ...
- Landsat 7的热红外波段有2个该如何选择?
本文介绍Landsat 7遥感影像数据中B61.B62两个热红外波段的区别,以及研究应用时二者选择的依据. Landsat 7遥感影像数据具有2个热红外波段,分别是Band 61与Band 6 ...
- Zabbix6.0使用教程 (二)—zabbix6.0常用术语
上一次我们已经详细介绍了zabbix6.0的新增功能,本篇我们来说说zabbix6.0常用的一些术语,这个对小伙伴日常使用zabbix的时候还是非常有用,建议大家收藏起来,话不多说,附上干货. 概览 ...
- 关于debian安装完后输入法的问题
sudo apt install ibus-libpinyin后 重启计算机
- 【Jmeter】性能测试--EMQ X 压测
一.业务背景 开发人员需要验证 EMQ X 性能参数,我选用了 Jmeter 进行测试,测试其连接数.发布订阅数据指标 二.测试环境搭建 1. Jmeter 2. Jmeter 插件:需要自行从插件管 ...