• 11569阅读
  • 8回复

[提问]关于QImage的保存问题 [复制链接]

上一主题 下一主题
 

只看楼主 倒序阅读 楼主  发表于: 2013-10-17
本人最近在用Qt写一个数字图像处理的软件,在图片保存方面碰到了些问题,故发帖求问
有两张图片,一张图深度是32位的,另外一张destImage深度是8位的,两张图片的长度和高度是一样的,然后把这张32位的转换成为了8位的灰度图片存放在第二张图片中
想要保存第二章图片,用destImage.save(filename.jpg);不行,报错
ASSERT failure in QVector<T>::operator[]: "index out of range", file ../../../../include/QtCore/../../src/corelib/tools/qvector.h, line 355
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
然后用代码destImage.save(filename.png);可以保存,但是保存的图像跟转换后的灰度图先不一样,然后保存之后的图像是24位的
这是什么情况?
然后我想保存为8位的图像应该怎么搞?
谢谢



只看该作者 1楼 发表于: 2013-10-17
不知道怎么搞,求高手指教

只看该作者 2楼 发表于: 2013-10-18
我解决了保存的问题
只要用QPixmap::fromImage(destImage).save(filename.jpg)
保存格式为bmp,png,jpg的都行
但是保存位深度还是24位的
这个问题怎么破?
怎么保存为8位的啊?
离线dbzhang800

只看该作者 3楼 发表于: 2013-10-18
引用第2楼唐门黄老邪于2013-10-18 00:25发表的  :
我解决了保存的问题
只要用QPixmap::fromImage(destImage).save(filename.jpg)
保存格式为bmp,png,jpg的都行
但是保存位深度还是24位的
这个问题怎么破?
.......


为什么先转成QPixmap再保存,直接保存不满足你的要求么?

只看该作者 4楼 发表于: 2013-10-18
回 3楼(dbzhang800) 的帖子
直接保存的话保存不了
不知道为什么
离线dbzhang800

只看该作者 5楼 发表于: 2013-10-18
那你需要好好查查这个问题了。

-------------

题外:

1. Qt中负责保存图片的是 QImageWriter 这个类。
2. QImage::save(),内部直接调用QImageWriter 进行保存。
3. QPixmap::save(),内部先将该QPixmap转换成QImage,而后调用QImageWriter
离线uidab

只看该作者 6楼 发表于: 2013-10-18
引用第2楼唐门黄老邪于2013-10-18 00:25发表的  :
我解决了保存的问题
只要用QPixmap::fromImage(destImage).save(filename.jpg)
保存格式为bmp,png,jpg的都行
但是保存位深度还是24位的
这个问题怎么破?
.......

  format() and convertToFormat().

查查这两个,应该是可以的。

QImage::Format_Mono    
QImage::Format_MonoLSB
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!

只看该作者 7楼 发表于: 2013-10-18
回 6楼(uidab) 的帖子
好的 我试试
谢谢了

只看该作者 8楼 发表于: 2013-10-18
回 5楼(dbzhang800) 的帖子
谢谢了
受教了
哈哈
快速回复
限100 字节
 
上一个 下一个