首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何翻转QImage

如何翻转QImage
EN

Stack Overflow用户
提问于 2015-02-09 19:58:07
回答 2查看 5.7K关注 0票数 3

翻转/镜像QImage的正确方法是什么?以下代码段不起作用。

代码语言:javascript
复制
 //allocate buffer
 BYTE* pRgb32Buffer = new BYTE[width*height* 4];
 //create paint device
 QImage img = QImage(pRgb32Buffer , width, height, getStride(width, pixelFormat), QImage::Format_RGB32);
 //do some drawing on image (works!) 
 QPainter painter(&img);
 painter.drawText(10, 50, QString("some text"));
 //mirrore image (doesn't mirror the orignal buffer!!!)
 img = img.mirrored(false,true);
 //doesn't work either
 //QImage mirrored = img.mirrored();
 //img = mirrored;
 //mirrored.detach(); 
EN

回答 2

Stack Overflow用户

发布于 2015-02-10 23:37:30

使用QImage::mirrored()的解决方案

memmove(pRgb32Buffer, img.mirrored().bits(),img.byteCount());

票数 3
EN

Stack Overflow用户

发布于 2015-02-11 17:43:51

我有这个可以将QPixmap镜像到QImage上的工作代码。

代码语言:javascript
复制
QPixmap* source = //... Getting my pixmap form somewhere...
QImage target(QSize(source->width(), source->height()), QImage::Format_ARGB32);
QPainter painter(&target);
QTransform transf = painter.transform();
transf.scale(-1, 1);
painter.setTransform(transf);
painter.drawPixmap(-source->width(), 0, *source);

source在该代码之后包含镜像的像素图。您应该能够使用QImageQPainter::drawImage函数作为替代方法来执行相同的操作。

如果你愿意,你可以选择保存文件(确保你有图像格式的dll,否则它将不会被写入):

代码语言:javascript
复制
QImageWriter writer("c:\\theimage.tiff", "tiff");
writer.setCompression(1);
writer.write(target);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28409248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档