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 ...
随机推荐
- 【Azure 应用服务】NodeJS项目部署在App Service For Linux环境中,部署完成后应用无法访问
问题描述 NodeJS项目部署在App Service For Linux环境中,部署完成后应用无法访问,在启动日志中发现错误消息:ERROR - Container XXX_0 for site X ...
- [C++] epoll编写的echo服务端
直接贴代码,代码是运行在Linux上面的,通过 g++ epoll.cpp编译 #include <sys/socket.h> #include <sys/epoll.h> # ...
- pandas plot函数:数据可视化的快捷通道
一般来说,我们先用pandas分析数据,然后用matplotlib之类的可视化库来显示分析结果.而pandas库中有一个强大的工具--plot函数,可以使数据可视化变得简单而高效. 1. plot 函 ...
- mybaits 笔记2022年8月学习笔记
mybatis整理 前期准备 安装必要依赖: idea开发mybatis,如果学习测试,可以在一个直接建一个空白项目,如果是用spring boot,则建议用用boot的安装捆绑方式 核 心依赖 or ...
- tooltip 可算修复了~ view-design 的 table 的cell.vue
tooltip 可算修复了~ view-design 的 table 的cell.vue 就这个bug可是有年头了,可算是修复了 ViewUI/src/components/table/cell.vu ...
- The History of the English language 英语语音的起源 - 英语的历史 - 古英语 印欧语 希腊语 拉丁语
印欧语 希腊语 拉丁语 日耳曼语 都是什么年代的语言 https://time.graphics/line/776755 印欧语是指印欧语系,它最初被认为在公元前2500年左右分散流传于欧洲.亚洲和印 ...
- 微信自动信息发送助手WMR
某信自动信息发送助手WMR 最近放假闲来无事,捣鼓了一下pyqt5,正好手上有每天定时大量群发消息的需求,正好就用pyqt5做个小应用练练手. 包含到的主要库:pyqt5.pyperclip.pyau ...
- day03-自己实现Mybatis底层机制-02
自己实现Mybatis底层机制-02 7.任务阶段4&5 阶段4任务:开发Mapper接口和Mapper.xml 阶段5任务:开发和Mapper接口相映射的MapperBean (1)Mapp ...
- 基于R语言的raster包读取遥感影像
本文介绍基于R语言中的raster包,读取单张或批量读取多张栅格图像,并对栅格图像数据加以基本处理的方法. 1 包的安装与导入 首先,我们需要配置好对应的R语言包:前面也提到,我们这里选择基于 ...
- 谈谈Redis五种数据结构及真实应用场景
前言 如果问你redis有哪些数据结构,你肯定可以一口气说出五种基本数据结构: String(字符串).Hash(哈希).List(列表).Set(集合).zset(有序集合) 你或许还知道它还有三种 ...