http://www.gissky.net- GIS空间站

我要投稿 投稿指南 RSS订阅 网站资讯通告:
搜索: 您现在的位置: GIS空间站 >> 技术专栏 >> 技术前沿 >> 正文

GDAL库学习笔记(七): GDAL和PIL的互操作

作者:lilin    文章来源:啄木鸟CPUG站    点击数:    更新时间:2007-2-8
摘要:

PIL中对数据的写入用的是paste,

Toggle line numbers
   1 >>> help(im.paste)
   2 Help on method paste in module Image:
   3 
   4 paste(self, im, box=None, mask=None) method of TiffImagePlugin.TiffImageFile ins
   5 tance
   6     Paste other image into region
   7 
   8 >>>

手册里的解释更多。但差不多的解释就是把im的数据贴到所属对象的box框里。

好了。既然上面验证了两个库中读取的数据二进制一样,那么就可以互相交换数据了。可以把gdal的数据读出,贴到pil打开的数据中,也可以把PIL的数据读出,贴到gdal打开的数据中,尽情地干点偷梁换柱,移花接木的勾当(这个我拿手:-))。

在PIL中还有一个很好的东东--fromstring

Toggle line numbers
   1 >>> help(Image.fromstring)
   2 Help on function fromstring in module Image:
   3 
   4 fromstring(mode, size, data, decoder_name='raw', *args)
   5     Load image from string
   6 
   7 >>>

更多的要去看手册14和16页。Image本身有一个,im(Image打开的对象)也有一个。好用啊!!!创建一个空数据,然后用个fromstring,然后保存,就是一张新图!保存一下刚才那个10*10的图,看看是什么……

Toggle line numbers
   1 >>> newim = Image.new("RGB",(10,10))
   2 >>> newim.fromstring(datas.tostring())
   3 >>> newim.save("f:/png/new.png","png")
   4 >>>

另一种:

Toggle line numbers
   1 >>> Image.fromstring("RGB",(10,10),datas.tostring()).save("f:/png/new1.png","p
   2 ng")
   3 >>>

哈,只要一行!

我喜欢PIL的保存!真是太方便啦!

这么简单的方法,要把GeoTiff转出其他常见格式(不考虑空间信息的时候),就不要用gdal的创建方法了(真是太麻烦了!)用PIL的fromstring再save一下就好了,也不用创建驱动,然后区分Creat和CreateCopy的方式等等步骤,gdal就这点不好……不过如果要转出遥感特殊格式,比如hdf4啊什么的,或者转出的波段比RGB多,还是用gdal的好了。

当然,这里尤其需要注意两个库默认读写哲学的不同。必要的时候要数组转换,或者打开PIL的编码方式。不然转出的东西就不是个东西了。

2. 反馈

如果您发现我写的东西中有问题,或者您对我写的东西有意见,请一定要发邮件跟我讲,Email( linux_23@163.com )

上一页  [1] [2] [3] 

Tags:GDAL,开源  
责任编辑:gissky
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 中国地图