在 Qt 中处理非常大的图像
我无法让 Qt 处理超过 10,000X10,000 的图像。我正在处理每张大约 2GB 的巨大卫星图像。我考虑过使用内存映射,但图像仍然占用内存空间。
QFile file("c://qt//a.ras");
file.open(QIODevice::ReadOnly);
qint64 size = file.size();
uchar *img=file.map(0,size);
QImage I(img,w,h,QImage::Format_ARGB32);
谁能告诉我一种更有效的方法来处理 Qt 中的大图像?
I can't get Qt to work on images beyond 10,000X10,000. I'm dealing with huge satellite images that are around 2GB each. I considered using memory mapping but the image still occupies space in memory.
QFile file("c://qt//a.ras");
file.open(QIODevice::ReadOnly);
qint64 size = file.size();
uchar *img=file.map(0,size);
QImage I(img,w,h,QImage::Format_ARGB32);
Can anyone tell me a more efficient way to deal with large images in Qt?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Qgraphicsview 和一组图像图块,该视图处理所有滚动和世界坐标为你。
然后,您只需提前将图像预先切割成图块,或者动态提取一部分图像数据
Qgraphicsview and a set of image tiles, the view handles all the scrolling and world coords for you.
Then you just have to either pre-chop the images into tiles in advance or pull a section of image data on the fly
您可以使用某种平铺策略来分段加载和操作图像,而不是一次性加载和操作图像吗?
Can you use some sort of tiling strategy to load and manipulate the image piecewise, instead of all at once?
我猜您使用的是 32 位操作系统,并且地址空间不足。最简单的解决方案可能是使用 64 位操作系统(例如 Windows 7 x64)并将您的应用程序编译为 64 位。您的目标平台是什么(Windows、Mac OS X、Linux 等)?
这可能会有所帮助。
I'm guessing you're using a 32-bit OS and you're running out of address space. The easiest solution may be to use a 64-bit OS (e.g. Windows 7 x64) and compile your app for 64-bit. What is your target platform (Windows, Mac OS X, Linux etc.)?
This may help.