使用GDAL生产jpg格式的快视图(拇指图)
来源:互联网 发布:sql server 列转行 编辑:程序博客网 时间:2024/05/04 10:27
使用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格式的快视图(拇指图)
- C#使用GDAL将tif图像转换为jpg、bmp、png和gif格式的图像
- C#利用GDAL打开图像并拉伸像素值生成jpg快视图
- GDAL创建JPG格式图像
- GDAL-读取影像的金字塔,生成快视图
- 使用GDAL创建Erdas格式的金字塔
- android中图片png格式和jpg格式的使用
- [转]使用GDAL创建Erdas格式的金字塔
- GDAL中MEM格式的简单使用示例
- 使用GDAL打开和保存常见格式图像(代码)
- GDAL/ORG 支持的格式
- JPG格式(转)
- 将当前视图范围内的地图导出Jpg格式的图片
- 使用PowerDesigner把oom设计图导出jpg格式的图片
- 使用PowerDesigner把oom设计图导出jpg格式的图片
- 使用FFmpeg把视频转换成JPG格式的图片
- GDAL的RasterIO使用
- Java---GDAL的使用
- gethibernatetemplate的find方法大全
- hdu1176 免费馅饼
- Ant用法——运行java 类
- 1021. Couples简单题 -> 规模原来很大 -> 难 ->数据结构: 栈
- 破解光猫4台限制
- 使用GDAL生产jpg格式的快视图(拇指图)
- 敏捷日志2013-1-8
- OpenVPN Server client官方下载
- 1027. MJ, Nowhere to Hide简单题
- OpenCV中的CvSVM使用方法
- 1035. DNA matching简单题
- VC++ 从抓包到POST提交
- Java开发工具总结
- 关于Sencha Touch 2.1 Cmd jsb3