读入图像可以通过 QImage 构造函数, load(),loadFromData() 几种方法完成。还可以通过 QImage 的静态函数 fromData() 由指定数据构造一个 QImage 对象。
既可以从文件系统装入,也可以从 Qt 应用程序的嵌入式资源中读取,使用 save() 可以保存 QImage 对象。可以通过 QImageReader::supportedImageFormats() QImageWriter::supportedImageFormats() 获取 QImage 支持的所有文件格式列表。
转换图片格式png to jpg:
QPixmap pixmap;
if ( pixmap.load( " D://images//source.png " ) ( pixmap.save( "distance.jpg" ) //save image successful
//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 | 产品答疑