Big Jpeg打开,转换,以及显示

4 篇文章 0 订阅
4 篇文章 0 订阅

传统相机拍摄的Jpeg图像一般为几兆到几十兆(分辨率为X000*X000),一般不会太大,但医学研究上电子切片等可以拍摄几万乘以几万分辨率的图像,图像转换为bmp可以达到几G。

前段时间遇到一个问题:一张JPG图像分辨率为33874*32185 深度为24,水平和竖直dpi为96,大小87.1mb,用目前流行的Adobe Photoshop,美图看看,画图版等都无法打开,因为我当前操作系统是64位 windows7,所以自带的图像查看软件可以打开,但载入的时间非常久而且占了6点多G,让我很头疼。

于是就想自己写个程序搞定这个图像。

用了FreeImage图像库来打开和保存图像,但在调用FreeImage_Load函数时,返回值为NULL,这个问题让我很困惑,寻找了很多方法还是没有解决,并且我的内存是8G的不存在不能分配的问题。后来查看了FreeImage的源代码,发现底层是malloc了一个bmp大小的内存,32位机器的总内存为2^31==4G,最大malloc为2G,而我图像需要内存为3.2G,所以一直Load不成功,我把程序换成了64位,编译器平台为VS2010,这个问题解决了,然后用FreeImage_Save保存了BMP图像。

但这么大的图像,一般看图软件还是不能打开,所以显示还是自己去完成。

基本想法是每次从文件中取响应于窗口大小的图像数据显示出来,这样就不用将整个图像载入内存中去了,整个源代码我放在了资源部分:http://download.csdn.net/detail/mcgradycom2/4596225。

简单的总结了一下这次问题的解决办法,希望这部分经验可以和大家分享。

程序只是个demo,存在部分bug,由于本人还有其他东西研究,也希望各位可以完善代码,共同进步。


ps:

本人最近在研究光场成像技术,如果有同方向的学者,可以加入新浪微群讨论:http://q.weibo.com/1036345;

附图:细胞图像,大分辨率图像;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值