qt笔记 图片处理(1)qpixmap,qimage
概念:
- image depth:像素占用的bit,也是用来衡量分辨率的参数。32位:真彩色。
- RGBA: (PNG)红黄蓝分量+alpha分量,alpha分量表示透明度,alpha为0时该像素完全透明,为255时该像素为传统rgb像素
- CMYK:该模式用于印刷。C代表青色,M代表洋红,Y代表黄色,K代表黑色
- HSL:HSL格式表示色彩 - hue(色相), saturation(饱和度), lightness(明度)
1、qpixmap
- 基类:QPaintDevice
- 子类: QBitmap
- 构造:
- QPixmap()//null qpixmap,可以用 isnull() 判断
- QPixmap(int width, int height)
- QPixmap(const QSize &size)//根据size创建
- QPixmap(const QString &fileName, const char * format = Q_NULLPTR, Qt::ImageConversionFlags flags = Qt::AutoColor)// > If the image needs to be modified to fit in a lower-resolution result (e.g. converting from 32-bit to 8-bit), use the flags to control the conversion.
- 常用方法
- 加载图片
- bool QPixmap::load(const QString &fileName, const char *format = Q_NULLPTR, Qt::ImageConversionFlags flags = Qt::AutoColor)
- bool QPixmap::load(const QString &fileName, const char *format = Q_NULLPTR, Qt::ImageConversionFlags flags = Qt::AutoColor)
NOTE:qpixmap将图片存储在缓存器里,反复load,要么用局部变量,要么QPixmapCache::clear();然后再加载,要么在初始化函数里写:QPixmapCache::setCacheLimit(1)
- 保存图片,根据格式(默认格式为后缀,0),quality range(0,,100),-1默认
- bool QPixmap::save(const QString &fileName, const char *format = Q_NULLPTR, int quality = -1) const
- bool QPixmap::save(const QString &fileName, const char *format = Q_NULLPTR, int quality = -1) const
- 给qpixmap指定大小,,指定纵横比模式,,缩放模式,非默认缩放选项效果与平台有关
- QPixmap QPixmap::scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
- QPixmap QPixmap::scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
- 转换为qimage对象
- QImage QPixmap::toImage() const//失败返回空的qimage对象,要判断
- 根据qimage填充qpixmap,若返回false,则该pixmap为null
- bool QPixmap::convertFromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor)
- 加载图片
- etc
2、qimage
- 特点: qpixmap则针对在屏幕上显示图像进行了设计和优化。qimage针对I/O和直接像素访问和操作进行了设计和优化,
- WARN: 不支持使用qImage::format_indexed8格式在qImage上绘制。
- 构造函数
- QImage()
- QImage(const QSize &size, Format format)
- QImage::QImage(const uchar * data, int width, int height, int bytesPerLine, Format format, QImageCleanupFunction cleanupFunction = Q_NULLPTR, void * cleanupInfo = Q_NULLPTR)
- QImage(const QString &fileName, const char * format = Q_NULLPTR)
- QImage(const QImage &image)
- 常用函数
- 返回第一个像素数据的指针
- uchar * QImage::bits() = scanLine(0)
- 返回该image字节大小
- int QImage::byteCount() const
- 每行字节数
- int QImage::bytesPerLine() const
- 根据内容产生特有的标志
- qint64 QImage::cacheKey() const
- 改变qimage本身格式
- QImage QImage::convertToFormat(Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const
- 截取并返回长方形部分qimage
- QImage QImage::copy(const QRect &rectangle = QRect()) const
- QImage QImage::copy(int x, int y, int width, int height) const
- 返回image depth
- int QImage::depth() const
- 定义水平,竖直放置的像素,(由此改变纵横比)
- int QImage::dotsPerMeterX() const
- int QImage::dotsPerMeterY() const
- 返回该image的format
- Format QImage::format() const
- 检测该qimage是否有alpha分量
- bool QImage::hasAlphaChannel() const
- 返回该qimage的height和width
- int QImage::height() const
- int QImage::width() const
- 加载图片
- bool QImage::load(QIODevice *device, const char *format)
- bool QImage::loadFromData(const uchar *data, int len, const char *format = Q_NULLPTR)
- 返回处理过的qimage
- QImage QImage::mirrored(bool horizontal = false, bool vertical = true) const//镜像翻转
- 返回给定位置的像素信息,****可以根据height,width改变该图片的色调
- QRgb QImage::pixel(const QPoint &position) const
- QRgb QImage::pixel(int x, int y) const
- 返回指定位置像素的颜色信息,当image较大时,代价很大
- QColor QImage::pixelColor(const QPoint &position) const
- QColor QImage::pixelColor(int x, int y) const
- 返回像素格式
- QPixelFormat QImage::pixelFormat() const
- 反回指定位置的像素下标
- int QImage::pixelIndex(const QPoint &position) const
- int QImage::pixelIndex(int x, int y) const
- 返回图像封闭矩形
- QRect QImage::rect() const
- 返回红蓝分量交换过的 qiamge
- QImage QImage::rgbSwapped() const
- 保存为文件
- bool QImage::save(const QString &fileName, const char *format = Q_NULLPTR, int quality = -1) const
- bool QImage::save(QIODevice *device, const char *format = Q_NULLPTR, int quality = -1) const
1009c445543607928aeb27873fc08150.png
- 调整qimage大小,,以及纵横比,,参数见qpixmap::scaled()
- QImage QImage::scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
- 修改qimage信息
- void QImage::setColor(int index, QRgb colorValue)
- void QImage::setPixel(const QPoint &position, uint index_or_rgb)
- void QImage::setPixel(int x, int y, uint index_or_rgb)
- void QImage::setPixelColor(const QPoint &position, const QColor &color)
- ,,,,balalah,,,,,
- 返回第一个像素数据的指针
- 有待完善,供日后工作使用