QImage加载的png所占内存过大

oldmtn 2014-12-25 03:33:25
有一个图片
png
427KB
2480 X 3507

使用QImage* pImage = new QImage(strImagePath);后

pImage->byteCount() = 34789440
即33M

图片从427KB ==> 33M, 扩大了79倍。
虽然知道png是压缩的,加载到内存会变大,但是也不该放大这么多啊。。
...全文
1072 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldmtn 2014-12-26
  • 打赏
  • 举报
回复
引用 4 楼 Inhibitory 的回复:
1. 用QImage加载png 2. QImage.scaled把图片缩放到要显示的合适大小 3. 把QImage转换成QPixmap显示
对于1: 我目前就是用QImage加载的,你是指不动态new,直接设置成员变量?我想应该是一样的,没什么改进。 然后我做来个实验,依然占用很多内存。 对于2:因为我这里需要支持随时放大缩小,故不适用。 对于3:网上说QPixmap比QImage占用的内存还要多。
Inhibitory 2014-12-26
  • 打赏
  • 举报
回复
1. 用QImage加载png 2. QImage.scaled把图片缩放到要显示的合适大小 3. 把QImage转换成QPixmap显示
oldmtn 2014-12-26
  • 打赏
  • 举报
回复
引用 1 楼 dbzhang800 的回复:
应该没什么问题,假定你的png是的 BPP 是 32 >>> 2480*3507*4 34789440 话说,不正是因为位图数据保存时太占空间(传输太占带宽),才有 png/jpeg/jp2 等东西存在么,不就是为了是这个压缩比尽可能大么?。
可是在Windows里面加载同样的一张png,却没有消耗近33M的内存啊。。。。 我们可不可以自己实现windows的这套方法。
oldmtn 2014-12-25
  • 打赏
  • 举报
回复
因此当我这个程序里面有60张该图片的话,一下子要消耗近2G的内存.吃不消啊.
dbzhang800 2014-12-25
  • 打赏
  • 举报
回复
应该没什么问题,假定你的png是的 BPP 是 32 >>> 2480*3507*4 34789440 话说,不正是因为位图数据保存时太占空间(传输太占带宽),才有 png/jpeg/jp2 等东西存在么,不就是为了是这个压缩比尽可能大么?。

16,816

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧