问题标签 [qpixmap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2323 浏览

c++ - 获取 QPixmap 哈希的最佳方法是什么?

我正在使用 Qt 4.5 开发一个图形应用程序并将图像放入 QPixmapCache,我想对此进行优化,以便如果用户插入已经在缓存中的图像,它将使用它。

现在每个图像都有一个唯一的 id,这有助于优化自己的绘画事件。但是我意识到,如果我可以计算图像的哈希值,我可以查找缓存以查看它是否已经存在并使用它(当然这对重复对象更有帮助)。

我的问题是,如果它的 QPixmap 很大,它的哈希计算会减慢速度还是有更快的方法?

0 投票
1 回答
1119 浏览

python - 当使用 Pixmap 调用 PyQt 的 setPixmap() 时,“Python.exe”崩溃

我有一个使用套接字相互发送和接收图像的程序。服务器使用'image.tostring()'发送图像数据,客户端接收它并使用'Image.fromstring'将其转换回图像,然后使用'ImageQt.ImageQt(image)'转换为QImage,将其转换为使用 'QPixmap.fromimage(qimage)' 进入 QPixmap 然后使用 'lable.setPixmap(qpixmap)' 更新我的 QWidget 的 QLable 图像

小图像一切正常,但图像大于 200x200,python.exe 崩溃,控制台只显示“进程终止,退出代码为 -1073741819”,并没有告诉我问题出在哪里。

我已将问题隔离到“setPixmap()”(只要我注释掉,其他一切都有效),但我看不出问题出在哪里。

这只发生在客户端。服务器端使用从 Image 到 QImage 到 QPixmap 然后 setPixmap 的相同步骤,但这没有任何问题。

还尝试将其设为 QBitmap 并在位图上使用 setPixmap,这很有效(但它是黑白的,所以不能使用它)。诡异的!

任何帮助,将不胜感激!

0 投票
3 回答
6450 浏览

c++ - 将 QPixmap 保存为 JPEG 失败(Qt 4.5)

我有以下代码。

所以,路径是这样的: - 弹出文件对话框 - 用户选择格式和文件 - 系统在 QPixmap 上绘制绘图 - 将 QPixmap 保存到文件中。

它适用于 PNG 和 BMP 没有问题,但对于 JPEG、jpg、JPG 等,它会失败。

我翻遍了 Qt 文档,但找不到任何细节。它应该可以工作。有任何想法吗?

我正在使用 Qt 商业版 4.5.1 for Windows。
我正在使用 dll,Qt 不在路径上。

我刚刚意识到我正在静态链接到其他库使用的经典第 3 方 jpeg.lib(独立 JPEG 组的 JPEG 软件)。

是否有可能因此而发生冲突或其他事情?

或者只是插件没有正确加载。

0 投票
3 回答
11930 浏览

python - 将 blob 图像数据加载到 QPixmap

我正在使用 PyQt4 为前端 GUI 编写程序,该程序访问后端数据库(可以是 MySQL 或 SQLite)。我需要在数据库中存储一些图像数据,下面是我用来将图像文件(JPEG 格式)导入数据库中的 blob 数据字段的 Python 代码:

这部分工作正常。我的问题是关于如何从存储在 PyQt4 数据库中的图像数据创建 QPixmap 对象。我目前的方法包括以下步骤:

(1) 数据库中的 Hex str -- cPickle&StringIO --> PIL Image Object

(2) PIL Image Object --> 临时图像文件

(3) 临时图像文件--> QPixmap

这种方法也很好用。但如果我不必写/读临时图像文件会更好,这可能会减慢程序对用户交互的响应。我想我可以使用QPixmap::loadFromData()直接从存储在数据库中的 blob 数据加载,并希望这里有人可以向我展示如何使用此函数的示例。

TIA,

必应

0 投票
4 回答
11501 浏览

qt - 如何解决 QPixmap::fromImage 内存泄漏?

我对 Qt 有疑问。

这是困扰我的代码的一部分:

因此,该方法showOnScreen使用私有方法从(OpenCV 使用)QImageIplImageCvt创建,然后用于创建以全屏显示图像。类继承。QImageIplImageQPixmapFullScreenImageQLabel

经过一段时间的延迟,全屏图片应该被隐藏,所以我使用QTimer延迟一段时间后触发事件。事件处理程序是hideOnScreen隐藏标签并应清除内存的方法。

问题如下:

每当我调用QPixmap::fromImage时,它都会为像素图数据分配内存并将数据从QImage内存缓冲区复制到QPixmap内存缓冲区。隐藏标签后,QPixmap数据仍然保持分配状态,更糟糕的是,在新QPixmap::fromImage调用之后,为新图片分配了新的内存块,而旧数据并没有从内存中释放出来。这会导致内存泄漏(使用我的测试图片的每个方法调用大约 10 MB)。我该如何解决这个泄漏?

我什至尝试创建一个私有QPixmap变量,存储由QPixmap::fromImage它创建的像素图,然后尝试在hideOnScreen方法中调用它的析构函数,但它没有帮助。

有没有一种非静态的方式来QPixmap创建QImage?或者更好的是,有没有办法QPixmap直接从创建IplImage*

预先感谢您的回答。

0 投票
2 回答
1076 浏览

c++ - 调用开始时QPainter失败

我正在尝试在 QsplashScreen 上绘制 PNG 文件。我试图通过QPainter. 我想通过它做的原因QPainter是因为我希望它平滑地最小化(直到它消失),当我只是修复它时,它看起来一点也不平滑。

我将 传递QSplashScreenQPainter构造函数。当我以参数为参数调用 begin() 时,它在QPainterassertQSplashScreen上失败d->active。当我提供时,它以同样的方式发生Qpixmap

我究竟做错了什么?我应该如何启动QPainter'开始()?

0 投票
1 回答
38853 浏览

qt - 如何将 QPixmap 对象保存到文件中?

我在读取和写入 QByteArray 数据到文件时遇到问题。

我的目标是将 QPixmap 数据保存到 QByteArray 中,并将 QByteArray 保存到文件中(能够从文件中读取此 QByteArray 并保存到 QPixmap 中)。我想使用 QPixmap 文档中的以下代码:

将缓冲区写入文件后,我希望能够检索 QByteArray 并使用 QPixmap::loadFromData() 函数将其加载回 QPixmap。

请让我知道是否需要进一步澄清(我也愿意接受替代方法,我只需要能够读取 QPixmap 并将其写入文件!:));

0 投票
3 回答
15226 浏览

qt - QGraphicsView 滚动和图像缩放/裁剪

我想在我的 QGraphicsView 中有一个背景图像,它总是缩放(并在必要时裁剪)到视口的大小,没有滚动条,也没有使用键盘和鼠标滚动。下面的示例是我在视口中缩放和裁剪图像的操作,但我使用随机值进行从以太中拉出的裁剪。我想要一个合乎逻辑的解决方案?

我想知道一种将图像缩放和裁剪为 QGraphicsView 大小的方法,即使我调整 QGraphicsView 的大小也能正常工作。1.5 和 19 来自哪里?

编辑; 我也尝试使用 setBackgroundBrush,但即使使用缩放/裁剪的 QImage/QPixmap,我也会得到平铺背景。

编辑; 到目前为止,我的解决方案是重写 drawBackground() 以获得我想要的结果,但这仍然不能帮助我学习如何将图像大小调整为 qgraphicsview 的视口大小。任何进一步的答案将不胜感激。

0 投票
2 回答
483 浏览

qt - jamvm1.5+classpath-0.96+qt4.3 QPixmap:在GUI线程之外使用pixmaps是不安全的

我是 Qt 的新手,我不知道如何处理它。

0 投票
1 回答
2664 浏览

multithreading - QT-QImage和多线程问题

大家好,

请参考图片:http: //i48.tinypic.com/316qb78.jpg

我们正在开发一个应用程序来从电子显微镜的 MRC 图像中提取细胞边缘。

MRC 文件格式存储体积像素数据(http://en.wikipedia.org/wiki/Voxel),我们只需使用 3D 字符数组(char***)从 MRC 文件加载和存储数据(灰度值)。

如图所示,有 3 个查看器分别显示 XY、YZ 和 ZX 平面。查看器顶部的滚动条用于沿轴更改图像切片。

这是用户更改滚动条位置时我们执行的步骤。

1)获取新的滚动条值。(这是选定的切片)

2)对于相关平面(YZ,XY或ZX),通过读取3D char数组(char***)为所选切片生成(char * slice;)数组

3) 创建一个新的 QImage* (Format_RGB888) 并通过读取 'slice' 设置像素值(使用 img->setPixel(x,y,c);)

4) 这个新的 QImage* 是在 paintEvent() 方法中绘制的。

我们将在一个单独的线程中执行“边缘检测”过程,因为它是一个密集的过程。在这个过程中,我们需要在 QImage* 之上绘制检测到的曲线(像素集)。(作为一个层)。这个意味着我们需要在 QT 线程之外调用 drawPoint() 方法。

这是在这种情况下使用 QImage 的最佳方法吗?

从另一个线程执行 QT 绘图方法的最佳方法是什么?

提前致谢,