qt中的照片处理

本文详细介绍了Qt中的QPixmap和QImage类,包括它们的构造、常用方法以及如何进行图片的加载、保存、缩放和格式转换。QPixmap专注于屏幕显示优化,而QImage则侧重于I/O和直接像素操作。在处理过程中应注意QPixmap的内存管理和QImage的格式限制。
摘要由CSDN通过智能技术生成

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)
保存图片,根据格式(默认

Qt,如果你想让显示在QLabel照片能够移动,你需要结合使用QGraphicsPixmapItem和QGraphicsView。QLabel本身并不直接支持图片位置的变化,但你可以通过以下步骤实现: 1. **创建图形界面元素**: - 创建一个`QGraphicsScene`作为舞台,用于放置图像。 - 使用`QGraphicsPixmapItem`来装载图片,它是`QGraphicsItem`的一个子类,可以处理位图内容。 ```cpp QGraphicsScene scene; QPixmap pixmap("path_to_your_image.jpg"); QGraphicsPixmapItem pixmapItem = new QGraphicsPixmapItem(pixmap); ``` 2. **添加到场景**: - 将`QGraphicsPixmapItem`添加到`QGraphicsScene`。 ```cpp scene.addItem(pixmapItem); ``` 3. **关联到QGraphicsView**: - 创建一个`QGraphicsView`来显示`QGraphicsScene`。 - 设置其视口,即显示区域。 ```cpp QGraphicsView view(&scene); view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate); // 更新整个视口 ``` 4. **移动图片**: - 如果你想动态地移动图片,可以监听鼠标事件并相应地调整`QGraphicsPixmapItem`的位置。 ```cpp QObject::connect(view, &QGraphicsView::mouseMoveEvent, [pixmapItem](QMouseEvent *event) { QPointF newPos = event->pos() + pixmapItem->boundingRect().topLeft(); // 根据鼠标位置计算新位置 pixmapItem->setPos(newPos.x(), newPos.y()); }); ``` 5. **显示窗口**: - 最后,设置窗体大小,并显示`QGraphicsView`。 ```cpp QWidget *window = new QWidget(); window->setLayout(new QVBoxLayout()); window->layout()->addWidget(&view); window->showMaximized(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值