2017-09-17 48 views
1

我的应用程序需要处理巨大图像(> 1 GB)。我的出发点是安装QT5时可以在widget文件夹中找到的图像查看器示例。这个例子的问题是,似乎不适合操纵像我需要处理的巨大图像。放大和缩小需要永久更新,因此用户体验不够好。将巨大的图像加载到QT窗口中,并且能够放大和缩小图像

我需要的东西就像Windows照片应用程序。加载图片可能需要很长时间,但一旦完成,您可以非常快地放大和缩小图片。但我需要用C++和QT构建这样的应用程序,以便以后我可以对像素进行子计算。

任何人都知道我可以看看构建这样一个应用程序的任何示例,即通过QT库的图像加载器,以便我可以放大和缩小这些图像顺利?

在此先感谢

回答

0

你可以尝试使用QGraphicsArea吗?

找到一些方法可以将图片分成小部分。然后,每当图形区域的视口改变时,只将可见方块流入图形区域。

0

真正的应用程序处理这种方式是混合了平铺和mip映射。

使用Mip映射技术上被推挤的图像的较低分辨率的版本到未使用的空间的图像中,或与其相邻,但这个想法是缓存2米分辨率的图像的每一个的功率。一步使用分辨率并插值像素值。

平铺是指存储图像不是作为一个缓冲或扫描线,但扫描线,而矩形块。这改善了局部性;从1000个扫描线部分采样几个1000像素会造成缓存中的垃圾。

你可以调整它,渲染较低分辨率的版本,如果你没有管理你想要的帧率。而且可能还有其他更奇特的方式来获得极致的表现。

我不知道的一个平凡的方式在Qt来做到这一点。

0

通常有处理大文件你可以读文件到一个缓冲区,并把它分割矩形图形,然后加载和查看他们,即使是较大的文件,你可以创建一个缩略图将有更多像许多解决方案处理算法,以减少文件大小和保持图片质量。

QGraphicsview和一组图像瓦片,视图处理所有的滚动和世界COORDS为您服务。
那么你就必须要么预先砍图像转换成瓦片提前或在飞行

拉图像数据的部分见this问题找到更多关于处理纹理QOpenGLTexture大文件。