使用GDAL生成快视图主要有两个步骤,第一重采样生产小图像;第二将生成的小图像CreateCopy生成jpg格式或者png格式。由于GDAL不支持直接创建Jpg或者png的压缩格式的图像,所以中间需要一个中转的过程。

下面简单说明一下过程,代码就不贴了。首先通过获取采样比例计算输出图像的大小,这里可能需要根据需求自己定义。我遇到了一般有两种情况:第一种,将图像直接缩小到原来的10分之一(或者其他的比例),比如原图是20000×20000,那么快视图就是2000×2000。第二种,输出的图像范围在一个指定的范围,比如输出的快视图大小不能超过1024×1024,那么这里就需要通过原始图像的宽度和高度和这个1024计算采样比例。对于这两种情况,最后都是归结到一种情况来处理,那就是计算重采样比例,然后使用重采样比例进行采样。

关于使用GDAL重采样的部分代码可以参考之前的博客《如何使用GDAL重采样图像》,地址是:http://blog.csdn.net/liminlu0314/article/details/6130064。

使用重采样生产一个临时文件,这个文件是一个GDAL可以直接创建的图像,比如Tiff格式,或者img格式。接下来使用GDALOpen打开这个图像,然后使用CreateCopy函数创建一个jpg图像(png与之类似),最后把这个tiff临时文件删除即可。到这里的话,这个功能就算完成了,但是总觉得有点不爽的感脚。是啥呢,就是这个临时文件,就这么个小功能,来个临时文件,确实感觉不爽啊,下面就告诉大家怎么替换这个临时文件。

如果有人看过我的博客,应该会记得之前有篇博客,关于GDAL的内存文件,就是MEM格式的文件。博客叫《使用GDAL的MEM内存文件保存临时文件》,地址为:http://blog.csdn.net/liminlu0314/article/details/7166230。好了,就是他,我们可以使用MEM来替代这个临时文件。

关于MEM内存文件的使用,和普通的图像一样,只不过在创建的时候,驱动选择MEM,创建图像的时候不需要指定文件路径,直接用空字符串即可。

通过上面的分析,这里大致总结一下,修改GDAL重采样的代码,把里面的创建输出的图像创建为一个MEM的GDALDataset,这样重采样后的结果就存储在这个MEM的GDALDataset中了;接下来再创建一个JPG的驱动,使用JPG的驱动的CreateCopy函数来生成jpg图像就可以了。

PS:MEM文件的大小依赖于自己的电脑的内存,所以在创建MEM文件的时候确保自己的电脑内存能够存的下这个文件,如果太大就会失败,鉴于这里的快视图一般都比较小,此处使用MEM还是蛮合适的。

使用GDAL生产jpg格式的快视图(拇指图)相关推荐

  1. 利用IDL输出影像快视图、拇指图

    大家做影像管理方面的业务,一定会需要针对影像生成快视图.拇指图,代码方面用的最多的应该是GDAL库了,其实如果安装了ENVI,利用IDL生成的话也很方便.下面我就测试数据(GF2(高分二号)影像)生成 ...

  2. GeoServer源码解析栅格数据Image Mosaic JDBC插件原理(一)GDAL生产影像切片

    1. 作者声明 GeoServer源码解析栅格数据Image Mosaic JDBC插件原理共分三篇幅 (一)GDAL生产影像切片 (二)GeoTools Image Mosaic JDBC插件源码解 ...

  3. GDAL读取Jpeg2000格式图像

    JPEG-2000标准支持无损和有损压缩,并且支持单图像分量(如灰度图像)和多图像分量(如彩色图像).除了基本的图像压缩功能外,还支持其他的功能:1)对图像进行按精度或者按分辨率来渐进显示.2)感兴趣 ...

  4. GDAL添加ECW格式支持

    目录 GDAL添加ECW格式支持 ECW 下载ECW JPEG SDK 在Unix平台构建支持ECW的GDAL 二进制ECW SDK和GCC >= 5.1 在Linux上构建的教程 在Windo ...

  5. 二、Apollo高精地图详解(2. 高精地图的采集、生产与格式规范)

    2. 高精地图的采集.生产与格式规范 高精地图的采集--传感器 传感器 原理 备注 GPS 确定四颗或者更多卫星的位置并计算出GPS接收设备与每颗卫星之间的距离,然后用这些信息使用三维空间的三边测量法 ...

  6. JAVA调用GDAL实现影像格式转换,以tif to jpg为例

    前言 本文简单实现java调用GDAL实现影像格式转换. package Marcus.com;import org.gdal.gdal.Dataset; import org.gdal.gdal.D ...

  7. 基于Python+GDAL实现nc格式转geotiff格式

    基于Python+GDAL实现nc格式转geotiff格式 1. 目的 2. 版本 3. 基础知识  3.1 什么是nc文件?  3.2 基于Python处理nc文件需要用到的库 4. 程序示例 5. ...

  8. 奕新集团RAC 11g 生产库环境(待完善无图)

    奕新集团RAC 11g 生产库环境(待完善无图) 1.硬件规划: CPU     8个 内存 8G 网卡 2张 硬盘 1个90G机内盘 8个存储盘 分区:boot 200M swap 8G LVM / ...

  9. NeurIPS 2021 | 简单且通用的多视图对比图聚类方法

    随着信息时代的蓬勃发展,产生了大量多视图属性图图数据.随即,也出现许多的多视图聚类方法,但这些方法只利用数据中的多属性信息或者多拓扑图信息,没有完整地利用属性图数据的所有信息. 本期 AI Drive ...

最新文章

  1. 卷积神经网络中的参数共享/权重复制
  2. idea 自定义工具栏
  3. ZOJ18th省赛 Lucky 7
  4. HDU-4536 XCOM Enemy Unknown 枚举
  5. YangTools从YANG生成Java类(Maven)
  6. pdf批量添加图章_1分钟学会制作电子公章,三步搞定,轻松在PDF文件中添加公章图片...
  7. Apache2 Linux 的安装与介绍
  8. MySQL 从删库到跑路
  9. 腾讯城市安全运营中心思考与实践:“1151”框架为智慧城市安全运营提供新方式
  10. 【解释比较形象好理解】你稀里糊涂学的算法复杂度,原来这么简单!
  11. 微星主板 Ubuntu20.04安装以及配置
  12. linux7台式机安装失败,台式机安装centos7提示“No Caching mode page found”
  13. 计算cosx的近似值
  14. 又老了一岁,祝自己生日快乐。。。
  15. error LNK2005解决方法
  16. 高效进行接口测试,简单易懂
  17. AG9310MEQ AG9310MFQ 安格两款USB TYPEC转HDMI音视频数据转换功能芯片参数差异与设计电路参考
  18. 2016中国联通电信4K智能机顶盒白皮书
  19. 转贴: 浅析多声道LPCM TRUE HD DTS HD之异同
  20. 去中心化和非去中心化的区别?

热门文章

  1. python中copy和deepcopy的区别_python里shadowcopy和deepcopy的区别
  2. uniapp中利用监视vuex中state数据配合uview实现登录消息提示
  3. Unity渐变色实现
  4. php对smarty的使用,[ php ] php smarty使用!
  5. error40无法打开到sql_技术分享|初识SQL优化之执行计划查看分析
  6. Python知识点-py2和py3编码
  7. 1. ansible-playbook 变量定义与引用
  8. shell基础(下) 特殊符号
  9. 计算机打开管理工具空白,大师解决win10系统打开设备管理器却显示空白的办法...
  10. 【C++】memset()给整形数组赋初值的坑(不要这么做)