一,将图片在pc上解析,然后将解析文件放到qrc文件中,读取qrc文件。

1,将图片解析后的二进制文件保存,源码如下,

下载地址:https://files.cnblogs.com/files/senior-engineer/imageTest.rar

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private slots:void saveImageToFile();void refreshImage();private:Ui::Widget *ui;private:QString m_fileName;int m_imgWidth;int m_imgHeight;
};#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QImage>
#include <QFile>
#include <QDebug>
#include <QResource>#define IMAG_BIT 3Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);//m_fileName = "radio_but_eq_p.png";m_fileName = "bg.png";ui->imageName->setText(m_fileName);//    QResource resource;
//    resource.setFileName(":/main_bg.png");
//    const uchar* imageData = resource.data();
//    QImage desImage = QImage(imageData, 800,480,QImage::Format_RGB32); //RGB32
//    QPixmap pixmag;
//    pixmag = QPixmap::fromImage(desImage);
//    ui->oldImage->setPixmap(pixmag);
QPixmap pixmap(":/main_bg.png");ui->oldImage->setPixmap(pixmap);//    QPixmap pixmag;
//    pixmag.load(m_fileName);
//    ui->oldImage->setPixmap(pixmag);
connect(ui->start, SIGNAL(clicked(bool)), this, SLOT(saveImageToFile()));connect(ui->refresh, SIGNAL(clicked(bool)), this, SLOT(refreshImage()));
}Widget::~Widget()
{delete ui;
}void Widget::saveImageToFile()
{QImage image(m_fileName);//  QImage image = QImage(800,480,QImage::Format_RGB888); //RGB32//   image.load(m_fileName);int size = image.byteCount();int sizePerLine = image.bytesPerLine();int line = size / sizePerLine;m_imgWidth = image.width();m_imgHeight = image.height();qDebug() << "size:" <<size;qDebug() << "sizePerLine:" << sizePerLine;qDebug() << "line:" << line;qDebug() << "width:" << m_imgWidth;uchar* imgDataNew = image.bits();FILE *pf = fopen("newfile.png", "wb");if(pf == NULL)return;QFile file;file.open(pf, QIODevice::WriteOnly); //1for(int i = 0; i < line; i++){uchar* lineData = image.scanLine(i);for(int j = 0; j < sizePerLine; j++){file.write((char*)(lineData + j),1);}}file.close();//    QImage desImage = QImage(m_imgWidth,m_imgHeight,QImage::Format_RGB32); //RGB32//    //RGB分量值
//    int b = 0;
//    int g = 0;
//    int r = 0;
//    int a = 0;//    //设置像素
//    for (int i=0;i < m_imgHeight;i++)
//    {
//        for (int j=0; j < m_imgWidth * 4;)
//        {
//            b = (int)*(imgDataNew + i * m_imgWidth * 4 + j);
//            g = (int)*(imgDataNew + i * m_imgWidth * 4 + j + 1);
//            r = (int)*(imgDataNew + i * m_imgWidth * 4 + j + 2);
//            a = (int)*(imgDataNew + i * m_imgWidth * 4 + j + 3);
//            desImage.setPixel(j / 4,i,qRgba(r,g,b,a));
//            j = j + 4;
//            //desImage.setPixel(j,i,qRgb(r,g,b));
//        }
//    }//    QPixmap pixmag;
//    pixmag = QPixmap::fromImage(desImage);
//    ui->newImage->setPixmap(pixmag);
}void Widget::refreshImage()
{QFile file(":/newfile.png");//if (!file.open(QIODevice::ReadOnly | QIODevice::Text))if (!file.open(QIODevice::ReadOnly))return;QByteArray array = file.readAll();//file.close();char* imgDataNew = array.data();QImage desImage = QImage(m_imgWidth,m_imgHeight,QImage::Format_RGB32); //RGB32//RGB分量值int b = 0;int g = 0;int r = 0;int a = 0;//设置像素for (int i=0;i < m_imgHeight;i++){for (int j=0; j < m_imgWidth * 4;){b = (int)*(imgDataNew + i * m_imgWidth * 4 + j);g = (int)*(imgDataNew + i * m_imgWidth * 4 + j + 1);r = (int)*(imgDataNew + i * m_imgWidth * 4 + j + 2);a = (int)*(imgDataNew + i * m_imgWidth * 4 + j + 3);desImage.setPixel(j / 4,i,qRgba(r,g,b,a));j = j + 4;//desImage.setPixel(j,i,qRgb(r,g,b));
        }}QPixmap pixmag;pixmag = QPixmap::fromImage(desImage);ui->newImage->setPixmap(pixmag);//    QImage desImage ;
//    if(IMAG_BIT == 3)
//        desImage = QImage(m_imgWidth,m_imgHeight,QImage::Format_RGB888); //RGB24
//    else if(IMAG_BIT == 4)
//        desImage = QImage(m_imgWidth,m_imgHeight,QImage::Format_RGB32); //RGB32//    //RGB分量值
//    char b = 0;
//    char g = 0;
//    char r = 0;
//    char a = 0;//    //设置像素
//    for (int i=0;i < m_imgHeight;i++)
//    {
//        for (int j=0; j < m_imgWidth * IMAG_BIT;)
//        {
//            b = (int)*(imgDataNew + i * m_imgWidth * IMAG_BIT + j);
//            g = (int)*(imgDataNew + i * m_imgWidth * IMAG_BIT + j + 1);
//            r = (int)*(imgDataNew + i * m_imgWidth * IMAG_BIT + j + 2);
//            if(IMAG_BIT == 4)
//            {
//                a = (int)*(imgDataNew + i * m_imgWidth * IMAG_BIT + j + 3);
//                desImage.setPixel(j / IMAG_BIT,i,qRgba(r,g,b,a));
//            }
//            else if(IMAG_BIT == 3)
//            {
//                desImage.setPixel(j / IMAG_BIT, i, qRgb(r,g,b));
//            }
//            j = j + IMAG_BIT;
//        }
//    }//    QPixmap pixmag;
//    pixmag = QPixmap::fromImage(desImage);
//    ui->newImage->setPixmap(pixmag);
}

二,此方法已经试过了,但是open文件时候很耗时,大概200~300ms

(!file.open(QIODevice::ReadOnly))

二,直接加图片放到qrc文件中,读取qrc文件

一,qrc文件中添加图片资源

二,再.pro文件中添加qrc文件

例如:  RESOURCES     = res.qrc

三,在程序中使用图片文件时候,通过“:文件名”

例如:image=new QImage(":1.png");

四,此方法原理对应qt官方文档地址:http://doc.qt.io/qt-5/resources.html

三,将图片转换为数组,然后将图片画到界面上(适用绘制字体)

一,用下面工具将图片转换为数组

https://files.cnblogs.com/files/senior-engineer/fileToC.rar

二,更具对应数每个bit对应的是1或者是0绘制黑白

转载于:https://www.cnblogs.com/senior-engineer/p/9548271.html

qt 提高图片加载速度相关推荐

  1. 图片较多时要提高网页加载速度

    1.图片懒加载 将图片src先赋值为一张默认图片,当用户滚动滚动条到可视区域图片的时候,再去加载后续真正的图片 如果用户只对第一张图片感兴趣,那剩余的图片请求就可以节省了. 懒加载(LazyLoad) ...

  2. C# MVC使用阿里云对象存储加快图片加载速度(一)

    公司有个点餐的项目有大量的图片需要在扫码后的网页进行加载,刚开始使用的客户少的时候公司的4核8G,5M带宽的服务器还能挺快的加载图片和网页,但是客户一多,由于客户大多是快餐行业的,中午点餐的人数是相当 ...

  3. 网页速度很慢优化方案:如何提高网页加载速度,提升网站加载速度

    网站加载速度的快慢,直接影响用户的去留.这里为大家持续更新我的经验,帮你解决网页速度很慢,慢在哪里,该怎么优化的问题.希望对你有所帮助! 1.  网站空间要好:网站需要一个稳定的服务器或者虚拟机,可以 ...

  4. HTML 提高页面加载速度的方法

    HTML 提高页面加载速度的方法: 1. 减少http请求(合并资源文件,合并图片-精灵图) 2. 把css放文件头部,javascript放body标签尾部 3. 定义图片的宽,高 4. 避免空的s ...

  5. vue-cli新建工程后提高页面加载速度(含升级webpack4)

    2019独角兽企业重金招聘Python工程师标准>>> 提高页面加载速度的方式 升级webpack4.x及升级过程中产生问题的解决方式 webpack升级一路填坑记 图片压缩 用一个 ...

  6. 提高网页加载速度的一些方法和技巧

    网页的加载速度是评估网站质量一个重要指标,原因在于大多数用户能够容忍的网页加载时间只有几秒,如果超出了访客的忍受范围他们会毫不留情地关掉你的网页,所以网页载入速度会极大地影响网站的流量和访问. 以下总 ...

  7. 【PHP】如何提高网页加载速度?

    [php]如何提高网页加载速度? 1.减少页面请求: 从WEB运行原理上讲,IIS请求是无状态的,在服务器端一直是连接和关闭的不断进行着,如果能减少服务器请求,总的时间将会减少. 之前我下载163邮箱 ...

  8. 如何提高页面加载速度 || 前端的性能优化 || 浏览器渲染页面的过程是什么

    1.降低请求量 ​ ① 合并资源,减少http请求数量. ​② lazyLoad,如图片懒加载.分批加载,每次只加载一部分. ​ ③ 使用字体图标或CSS绘制,来代替部分图片. 2.加快请求速度 ​ ...

  9. 前端性能优化——如何提高页面加载速度?

    1.将样式表放在头部 首先说明一下,将样式表放在头部对于实际页面加载的时间并不能造成太大影响,但是这会减少页面首屏出现的时间,使页面内容逐步呈现,改善用户体验,防止"白屏". 我们 ...

最新文章

  1. 前端开发新手,这些书千万不要看!
  2. LiveData原理分析
  3. QT 防止FTP 上传软件在断连处 Crash
  4. ubuntu获取程序的帮助_如何在Raspberry Pi树莓派上安装Ubuntu
  5. android中的常用方法,android开发中常用方法总结
  6. 用了2年多快3年的老ASUS本子出了点小问题了
  7. (C语言)请编写程序,计算1-1/2-1/3-1/4-.....-1/50的和。
  8. C++_虚继承_虚函数_纯虚函数(多继承的二义性,多态)
  9. csdn中一篇sock 经验贴..
  10. Python3连接MySQL
  11. keygenerator php,学习PHP生成器的使用
  12. Linux虚拟机添加新硬盘的全程图解
  13. 走进javascript——解开switch之谜
  14. activity 流程编辑器_最好用的流程编辑器bpmnjs系列之Viewer
  15. Utrack声卡和机架包的调试
  16. EL表达式和JSTL标签库学习总结
  17. wampserver64安装时出现计算机缺少MCVR110.DLL无法安装等
  18. 小米路由器怎么设置无盘服务器,小米路由器怎么设置?
  19. balenaEtcher for mac(U盘启动盘制作工具)
  20. java append()_append()方法的坑

热门文章

  1. beego07----web博客
  2. linux usb驱动框架
  3. asp.net如何读取Excel文件
  4. JavaScript基础——处理字符串
  5. map中的erase成员函数用法
  6. struts2 获取 session
  7. 共享一个对Reflector 反编译支持中文的修正FileGenerator文件
  8. XHTML基础问答-给初学者
  9. A free SSH client - putty[]
  10. 《快活帮》第九次团队作业:Beta冲刺与验收准备