//save
image failure;
//load
image failure
// 保存为bmp格式
frame
=
new
QImage
(
rgb_buffer
,
640
,
480
,
QImage
::
Format_RGB888
);
QByteArray
aa((
const
char
*)
0
,
14
+
40
+
640
*
480
*
3
);
aa.append((
char
*)&bf,
14
);
aa.append((
char
*)&bi,
40
);
aa.append((
char
*)
rgb_buffer
,
640
*
480
*
3
);
bool
flag;
flag =
frame
->loadFromData(aa,
"BMP"
);
QT4.6中将QImage保存为JPG格式
貌似很容易,因为看QImage的save函数说明就可以做这种事情。
但是实际运行保存却失败。搜索之。
发现应该要找个疙瘩放这两句话:
#include
Q_IMPORT_PLUGIN(qjpeg)
QT目录/plugins/imageformats/qjpegd.lib(Debug)或者
QT目录/plugins/imageformats/qjpeg.lib(Release)也link进来就ok了。
By default, Qt can write the following formats:
Format
MIME type
Description
几何函数
size(),widt(),dotsPermeterX(),dotsPerMeterY()
函数获取图像大小和比例信息
用
pixelIndex()
函数获取像素的颜色索引,然后使用
color()
函数取出实际的颜色值
.
QImage
的
8
位和单色图像采用颜色索引表的方式存取,
32
为的图像则直接存储
ARGB
值
.
因此他们的像素操作函数也不相同,
对
32
位的图像,
setPixel()
函数可以改变指定像素的
QRgb
颜色值,对
8
位和单色图像,
setPixel()
改变在预定义颜色表中的索引值,如果要改变颜色表,可以使用
setColor()
函数。
QImage
提供
scanLine()
函数返回指定行的数据。
bits()
函数返回第一个像素的指针。每个像素在
QImage
中都使用整数形式表示。单色图像使用一位的索引指向只有两种颜色的调色板,有两种类型的单色图像,
big
endia(MSB),little
endian(LSB).256
色图像使用
8
位颜色调色板,调色板的数据类型是
QVector,QRgb
实际上时无符号整数型,存储
ARGB
的格式是
0xAARRGGBB.32
位的图像直接存储,有三种类型的存储格式:
RGB,ARGB
和已预乘的
ARGB
。在已预乘
ARGB
中,红绿蓝三色已经和
alpha
相乘并模除
255.allGray()
和
isGrayscale()
函数可以判断一个彩色图像能否安全转化为灰度图像。图像的格式用
format()
函数读取出,
convertToFormat()
可以进行图像格式转化,
QImage
支持的存储格式如下
:
QImage::Format_Mono
单色图像
(MSB)
QImage::Format_MonoLSB
单色图像
(LSB)
QImage::Format_Indexed8
使用颜色表的
256
色图像
QImage::Format_RGB32
不支持
Alpha
通道的
32
位图像
QImage::FOrmat_ARGB32
含
Alpha
通道的
32
位图像
QImage::Format_ARGB32_Premultiplied
已预乘的含
Alpha
通道的
32
位图像
.
新浪简介
|
About Sina
|
广告服务
|
联系我们
|
招聘信息
|
网站律师
|
SINA English
|
产品答疑