qt笔记 图片处理(1)qpixmap,qimage

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
        f2916d2b6026382185adc40ce042e1c8.png
    • 给qpixmap指定大小,,指定纵横比模式,,缩放模式,非默认缩放选项效果与平台有关
      • QPixmap QPixmap::scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
        9fc8d3ebe1905238b43ad96989101610.png
    • 转换为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,,,,,
  • 有待完善,供日后工作使用
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值