Qt加载特大图片

Qt使用libvips处理超大图片(GB以上图片) 一、libvips简介 libvips是一个多线程的高性能图片处理库,运行速度快,占用的内存很少,支持C,C ++,Ruby,Python,PHP,C#/ .NET,Go和Lua。可以用来对图片做算术,直方图,卷积,形态学操作,频率滤波,颜色,重采样,统计等操作,它支持从8位int到128位complex多种数字类型。支持各种图像格式,包括JPEG,TIFF,PNG,WebP,HEIC,FITS,Matlab,OpenEXR,PDF,SVG,HDR,PPM / PGM / PFM,CSV,GIF,Anal 阅读详情
AI摘要

本文介绍了在Qt中遇到加载1万*1万大图片导致QImage返回为空的问题,提出利用QImageReader的setScaledSize接口进行图片缩放的解决方案。通过设置目标尺寸为1000*1000,成功实现了大图的加载,并在测试中验证了方法的有效性。注意,对于非常大的图片,该方法可能会消耗较多时间,建议在后台线程执行。

QImage加载特大图片

今天遇到一个问题,下载一个图片的大小是1w*1w的,直接用QImage加载返回为空,导致一系列的bug。

解决方案

初步是思路是:是否可以有一个办法是变读变缩放,达到我们预期的大小,因为太大加载显示意义不大。通过了解,目前可能无法一次性加载,否则内存吃不消。
通过了解,出了qimage以外,qt提供了QImageReader的类,尝试查看了下QImageReader文档,发现setScaledSize接口,通过测试,成功的实现了缩放,但图片如果太大,可能比较耗时,可以开个线程去实现。

1##以下是测试demo##
	qDebug()<<Q_FUNC_INFO<<__LINE__;
    QImageReader ir("d://20000.png");
    qDebug()<<Q_FUNC_INFO<<__LINE__;
    qDebug()<<ir.size();
    QSize size(1000,1000);
    ir.setScaledSize(size);
    qDebug()<<Q_FUNC_INFO<<__LINE__;
    auto image = ir.read();
    auto ok = image.save("d://1.png");
    qDebug()<<Q_FUNC_INFO<<ok;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

QImage/QPixmap加载图片失败(宽和高都为0)的三种解决方法 先看现象,这里有一张图片test.png,windows照片查看器可以正常打开 但是用QImage加载时 QString filePath = qApp->applicationDirPath()+"/test.png"; QImage image(filePath); qDebug()<<image.isNull()<<image.width()<<image.height() 输出为:true 0 0 这里用到了QImage的构造函数:QImage: 阅读详情

相关推荐

9.2 使用QImage类加载图片

9.2 使用QImage类加载图片 QImage类提供了一个硬件无关的图像表示方法,可以直接访问图像的像素和用于画图设备。如果要对图像进行操作,就需要使用QImage类,最终显示在标签上还得利用QPixmap类。下面将介绍常用的成员函数使用方法。 下面将介绍QImage使用方法。 1.构造QImage (1)QImage(int width, int height, Format format) (2)QImage(uchar *data, int width, int height, int .

3582

Qt加载大图片(图片较大无法正常加载,显示空白处理方法)

在项目中开发壁纸预览功能时,遇到一个100M的BMP图片无法加载的问题,查阅资料得知加载时较大的图片会因内存不足无法加载,显示一片空白,此时可通过分段读取的方法解决。 具体代码如下: QImageReader imageReader(url); QImage _image = QImage(1920, 1080, QImage::Format_ARGB32); QSize imageSize = imageReader.size();

fhakfs的博客 7159

Qt中显示图片是常见的功能,但是有时候图片过大或过小,会导致显示不适合。本文将介绍如何使用QLabel自适应显示图片。

在该示例代码中,我们创建了一个最小尺寸为1x1,最大尺寸为400x300的QLabel,并将其设置为自适应显示图片。然后,我们加载图片,并使用上述方法进行缩放并显示在QLabel上。这里,我们首先获取QLabel的宽度和高度,然后计算出图片实际大小与QLabel控件大小的比例。Qt中显示图片是常见的功能,但是有时候图片过大或过小,会导致显示不适合。接下来,我们需要计算图片实际大小与QLabel控件大小的比例,以便进行缩放。通过这种方法,我们可以实现在不同大小的窗口中,QLabel始终按比例缩放和显示图片。

CodeVorter的博客 1763

QT加载资源过大占内存

QT加载资源过大占内存,可通过加载外部资源

雪精灵的博客 1361

一种QImage加载大图片的解决方案

解决QT大图片加载失败问题:QImage加载大图片时,malloc返回NULL,导致图片加载失败。 用QT4.8,高版本改改头文件就可以了。

PID控制器(位置式和增量式)

PID控制算法

zhinian_hao的博客 4512

Notepad--:跨平台文件对比与编码智能处理解决方案

在代码开发与文档协作过程中,开发者常常面临版本对比混乱、编码格式不统一、大文件处理效率低下等痛点。Notepad--作为一款支持Windows/Linux/Mac的国产跨平台文本编辑器,通过创新的文件对比功能和智能编码处理机制,为开发者提供了高效的文件差异分析和编码转换解决方案。 ## 智能文件对比:告别版本混乱 ### 多模式对比引擎 Notepad--的文件对比功能基于CmpareMod

gitblog_00220的博客 771

【图像大模型】RIFE实战:如何通过中间流估计实现4K视频的实时插帧优化

本文深入解析了基于深度学习的RIFE视频插帧算法,重点探讨其核心的中间流估计技术如何实现高效精准的帧生成。通过实战教程,详细介绍了针对4K视频的实时处理优化方案,包括环境配置、参数调优及性能瓶颈分析,帮助用户利用消费级显卡将低帧率视频转化为流畅的高帧率体验。

weixin_29093017的博客 455

基于YOLOv5与PyQt5的道路标志识别系统:从算法训练到GUI应用开发全流程详解

目标检测是计算机视觉的核心任务之一,其原理是通过算法自动识别图像或视频中的特定物体并定位其位置。这项技术具有极高的技术价值,是实现自动驾驶、智能监控、工业质检等应用的关键基础。在众多目标检测框架中,YOLO系列以其卓越的实时性优势脱颖而出,尤其适合需要快速响应的边缘计算场景。本文将聚焦于一个具体的工程实践——道路标志识别系统,深入探讨如何将先进的YOLOv5算法与PyQt5图形界面开发相结合,构建一个包含模型训练、实时推理、结果可视化及数据持久化(MySQL)的完整应用。通过解析**模型训练**中的超参数调

weixin_34062469的博客 630

COMSOL实战:薄膜声学超材料模态分析全流程解析(含预应力设置技巧)

本文详细解析了使用COMSOL进行薄膜声学超材料模态分析的全流程,包括预应力设置技巧和共振频率优化方法。通过实际案例和参数设置指南,帮助工程师掌握从几何建模到结果解读的关键步骤,特别适合声学超材料和共振薄膜结构的设计与优化。

ujm5678901的博客 292

Innovus中_clock_gen skew group的隐藏陷阱:如何避免自动分组导致的时序问题

本文深入剖析了在Innovus工具进行时钟树综合(CTS)时,`_clock_gen` skew group自动分组机制可能引发的隐蔽时序问题。文章通过实际案例,解释了该机制如何错误地将分频寄存器与配置寄存器归为一组,从而破坏时钟域边界并导致post-CTS时序违例,并提供了关闭自动提取、手动精确定义skew group等有效解决方案。

gpu4optimizer的博客 266

QTableWidget加载大文件数据

QTableWidget加载大文件数据显示

yang843094036的专栏 2274

通达信强龙趋势幅图指标 - 精准捕捉趋势,把握强势行情,多角度分析个股,强弱一目了然

STICKLINE(趋势>0 AND SJTJ,4.8,5.8,1.5,0),COLORYELLOW;STICKLINE(资金>0 AND SJTJ,1.2,2.2,1.5,0),COLOR0080FF;STICKLINE(异动>0 AND SJTJ,0,1,1.5,0),COLORFF0080;STICKLINE(异动=0 AND SJTJ,0,1,1.5,1),COLORGRAY;

Q1809330692的博客 5622

Qt使用QImageReader加载图片

一种使用QImageReader加载图片的方法,图片大小为12M。

欧文的博客 666

【数字IC基础】DFT(Design For Test)可测性设计

【数字IC基础】DFT(Design For Test)可测性设计

努力,加油每一天鸭~ 3464

HDR 人像肤色稳定实战:AE/AWB/ToneMap 冲突解耦与优先级裁决

人像 HDR 最容易“翻车”的就是**肤色飘**:AE 抢亮度、AWB 拉白点、TM 又在肩部压高光,三方各自“对”却合起来“错”。本文给出一套**工程可落地**的裁决策略:以**肤色 ROI 锚点**为最高约束,AE 先对脸部入射照度收敛,AWB 在**肤色先验 + 光源模型**下缓变,TM 采用**色相保持 + 中灰/肤色双锚**且时域一致化。配套**阈值与回归**(ΔE00、亮度漂移 RMS、频闪注入),把“主观对”的口径落到**可度量**,并给出逆光、多脸、霓虹等极端场景的**例外分流**。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1197

QT QImage连续加载大图内存不够用

** 加载小图或者一次性加载一张的时候这个方法是没有问题的! ** 当图片达到50M左右时 一次多张加入内存中会导致内存不够用,如果是批量生成操作QImage对象时 会出现获取到的对象是NULL, 此时可以使用下面方法,通过buffer生成QImage,buffer获取数据时候不要全部拿图片的实际大小,因为我这里本来就是生成缩略图,被压缩了也不影响。 完成代码: QScreen *screen = QGuiApplication::primaryScreen(); QSize screen_size =

weixin_36827459的博客 4514

服务部署之配置WSUS更新服务(基于Windows配置 Server 2022)

服务部署之配置WSUS更新服务(基于Windows配置 Server 2022)

2301_77192876的博客 2213

qt显示较大图片时速度很慢怎么处理

qt显示较大图片时速度很慢怎么办 QImagemyImage(pBuffer,Width,Height,QImage::Format_RGB888); QPixmappixmap=QPixmap::fromImage(myImage); ui->displayLabel->setPixmap(pixmap);</span> 我是在scrollare...

好习惯成就伟大 8788

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

qt 批量加载图片时内存占用很大_一个方案提升Flutter内存利用率(干货)

背景我们闲鱼使用的图片方案是自研的外接纹理方案:Android侧创建SurfaceTexture,通过FlutterJNI注册到Flutter engine里,最后返回texture id给Flutter应用层,应用层使用Texture Widget和textue id去显示图片纹理。纹理数据则是在Android侧,通过OpenGL将图片纹理写入到SurfaceTexture,然后通过Flutte...

weixin_39927144的博客 1436

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Qt学习之使用QLabel加载图片并进行图像拼接

本文介绍如何使用QLabel加载本地图片,将不同的图像进行拼接成一张图并保存至本地。主要用到QLabel、QPixmap、QImage、QPainter这几个类。

似末的博客 4886

QImage打开分辨率大的图片会报错:QImageIOHandler: Rejecting image

/我们的9344*7000的单通道图片就有62.3MB大小,而QImage是按照四通道来限制内存的,所以62.3MB*4=249.2MB。需要高于此限制的 QImage 内存分配的图像将被拒绝。注意:只有Qt6版本才有这个函数QImageReader::setAllocationLimit,Qt5是没有的。//解决办法就是扩容,使用setAllocationLimit函数,设置一个大于249.2MB的数值就可以。所以QImage想正常打开一幅10000*10000的图片,需要预先设置。

qq_35662333的博客 1121

Qt 中大尺寸图片的处理

我们的程序(用 Qt 实现),因为一个用户图标,在发到用户的产品中崩溃了。起因是这样的,我们允许用户注册上传自己的头像。然后中售卖的设备屏幕界面上,也会展示用户自己的头像。有一个用户上传了一个超大的头像图片,6144 x 6144 像素,jpg 的图片有 1.8M。然后他的设备的UI界面就经常卡死、崩溃。计算一下,假如图片每个像素 rgb 3 字节,那么 6144 * 6144 * 3 为 108M,对于 1个嵌入式平台,108 M已经很大了,申请这么大的内存很容易失败,那么程序崩溃就不足为奇了。.....

luansxx的专栏 4773
上一篇: 关于QtCreator编译的程序在Mac OSX(11) M1 上卡死
下一篇: Mac qt debug
weinkym
博客等级 码龄18年 126粉丝 30原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值