大图是指那种G级别,目前测试使用的图片大概是几万乘几万像素的灰度图。也就是其大小内存还是可以读入,但是需要对数据结构进行设计来达到优化使用的目的。
对于那些图片本身信息已经大于内存的数据,只有一些简单的思路,没有实现。
文章里只包含一些问题的总结和思路,没有具体代码和方案。

内存中储存

c++程序里对内存没有限制,只要别大于机器的内存就行。但是C#中有一些奇怪的设定,首先是32位平台下单个程序默认不允许超过2G。这个解决起来比较简单,直接在vs工程中修改某些设置就行(具体的话直接百度吧)。 另外还有一个限制,是我自己总结的,因为没有看到专门说这个的内容,就是单个内存地址,也就是申请的内存,也不能超过2G(具体大小没有测试,大约这个范围)。之所以得出这个结论,是因为在测试申请一个大于2G数组的时候,他会overflow,但是如果你申请的是4个512M的数组,就会一切正常。Mat/Image这两个类也是一样。应该就是他无法取出这么大的 连续空间的内存吧。

所以针对这个限制,我的解决方案是设计一个类,来实现大图片的分块读取和存储。为了提高效率,可以直接用byte的二维数据来做块,需要设置每块数据的最大上限,保证不超过(单个连续空间的最大值),同时这个最大上限会对图像的访问效率产生影响,所以需要一定的测试和修改。
这样就可以保证通过多个小内存,来储存一个大数据量图片的目的。

图像浏览

图像浏览这个需求可能就稍微小一点了吧。最典型的大图浏览其实就是地图,谷歌地图,百度地图应该都是用的类似算法--图像金字塔。

其实这个词一说出来这个算法应该就差不多知道了吧。就是在内存里生成一系列不同分辨率大小的图片,根据浏览需求的视场大小,选择合适的分辨率图片,从而输出一个(用户看的比较清楚,同时又尽可能小的图片)。是一种牺牲空间(内存)来换取时间的方式。

超超大图片

这个只是我又自己做的拓展出来的一些思考。

如果图片真的超级大,连内存里也存不下了,就只能用硬盘了。当然这里的硬盘最好是固态的了。其实内存和硬盘本质差不多,不过就是内存的读取速度快一点而已,所以如果图片大小真的超过内存了,那使用硬盘也是没有办法了。

可以在基于分块储存和金字塔的基础上,把一些访问率比较低,或者完整的大分辨率图像,通过某种储存和索引方式,存到硬盘里。(感觉说了和没说一样,难点应该就在于如何设计这种索引方式来达到高效读写吧)

超大图片的储存/处理/显示相关推荐

  1. 超大图片的显示:BitmapRegionDecoder 1

    不少安卓开发者都有图片加载的处理经验,比如通过压缩节省图片加载中对内存的消耗. 我们经常做的是把一张1280之类大小的图片以适应屏幕大小的尺寸展现出来,同时能够通过缩放来观察. 不过这是一般水平,通过 ...

  2. js大屏导出图片_超大图片全屏动态展示js插件

    intense-images是一款非常实用的超大图片全屏动态展示js插件.该图片查看插件可以全屏显示超大图片,可以使用鼠标来和图片进行交互,上下左右移动鼠标会相应的移动图片,对于超大图片的展示是非常好 ...

  3. 兼容超大图片的处理_N年都没弄明白!PS保存的图片格式都啥意思?

    点击蓝字 关注南哥   这个表里的格式,你都说得清么! 01 PSD 特点:支持PS全部功能,一般不用于成品图保存 后缀:.psd PSD是Photoshop的官方格式,可以自动保留下PS里的全部功能 ...

  4. 前端加载超大图片(100M以上)实现秒开解决方案

    前言 前端加载超大图片时,一般可以采取以下措施实现加速: 图片压缩:将图片进行压缩可以大幅减小图片的大小,从而缩短加载时间.压缩图片时需要注意保持图片质量,以免影响图片显示效果. 图片分割:将超大图片 ...

  5. css炫酷标题,纯css3鼠标滑过图片炫酷标题显示特效

    很多网站的图片鼠标滑过显示标题效果都是使用jQuery来完成的,现在,我们可以使用CSS3 animations来完成同样惊艳的效果.如果你对CSS3 animations还不了解,请先阅读CSS3 ...

  6. python运行完不能显示图_【已解决】Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片...

    [问题] 在windows的cmd命令行下,使用Python的PIL库打开并显示一个jpg图片:openedImg = Image.open(saveToFile); print "open ...

  7. layui上传图片列表展示_layui怎么做图片在列表中显示 | 学步园

    layui table中显示图片的方法: 图片需要用到模板.templet: 注意div不可省略,48px指的是div的高度,如果要决定img图片的高度,需要单独设计style ',style:'he ...

  8. ado.net图片点击刷新_华为官方解答为何微信保存的图片不在图库显示

    集微网12月31日消息(文/数码控),很多人在使用智能手机的时候会发现一些奇怪的事情,比如为何微信保存的图片不在图库显示,针对该问题,华为旗下的花粉俱乐部特地发文进行解答. 花粉俱乐部认为以下情况,导 ...

  9. [原创][连载].基于SOPC的简易数码相框 - Nios II SBTE部分(软件部分) - 从SD卡内读取图片文件,然后显示在TFT-LCD上...

    实在很抱歉,时间紧张,我只讲怎样从SD卡内读取bin文件(二进制文件),然后现在TFT-LCD上. 准备工具 1. Image2Lcd.zip 操作步骤 步骤1 寻找或制作240x320的图片 简单起 ...

  10. Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)【系列1】...

     Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)[系列1] Android在加载或者处理超大巨 ...

最新文章

  1. addonsmaker怎么制作_addonsmaker
  2. python有框架吗_Python几种主流框架
  3. mysql5.6视频_网易视频云:MySQL 5.6 5.7最优配置文件模板
  4. freemodbus线圈中的位操作
  5. # mergeSort 归并排序
  6. JAVA高级工程师课程笔记整理——(八)tomcat与九大内置对象
  7. 为什么Linux内核里大量使用goto,而很多书籍却不提倡使用?
  8. day26(模块 logging 高级用法、collection、random)
  9. 年会宣布 996 后,那些保持沉默的人
  10. [Python] 堆叠函数 stack((a,b), axis=0)
  11. 利用java打印出金字塔原理_《金字塔原理》的读后感作文2500字
  12. python3之http.server模块
  13. elementUI 输入框添加小图标
  14. 计算机界十位顶级人物!
  15. Openlayers地图背景透明度设置
  16. 双活数据中心存储问题梳理
  17. [高通SDM450][Android9.0]CTA认证--去掉彩信、短信、通话功能
  18. thinkphp 调用阿里云短信接口
  19. Python中的ppid
  20. 继电器rc吸收电路取值_固态继电器rc吸收电路的原理是什么

热门文章

  1. 运维日志审计是什么意思?用什么工具好?
  2. Windows 8激活产品密匙公布
  3. SqlServer 备份还原
  4. win7无法连接打印机拒绝访问_win7系统共享打印机拒绝访问的完美解决方法
  5. 利用mail 发送163 邮件
  6. 【零样本学习】Zero-Shot Learning via Class-Conditioned Deep Generative Models
  7. 带通滤波器是什么,它的原理是什么
  8. iOS程序员必读之热门书单
  9. JAVA+=运算程序诡异事件
  10. Android Persistent常驻内存分析