用NCL绘制png图片时,经常会在图片周围出现白边,比如下面这张图,小图EOF3下面出现了大片的空白,在将其贴到word文档中时,经常需要把下面的空白部分截掉才行。

那么有没有什么办法让图片在生成的时候就没有这些空白?在NCL语言中,可以设置res@gsnMaximize = True来使图片覆盖整个画布,同时使用下述命令控制画布大小:
xwks = "png"
xwks@wkHeight = 1024 ;数字需要自己反复调试
xwks@wkWidth = 1024
wks = gsn_open_wks(xwks,filename)
这里画布的大小需要根据图片情况进行反复调试,极大地降低了效率,并且使得出图程序不具备普适性。这里我使用了convert命令对图片进行处理。具体的操作步骤为:
1、利用NCL生成ps或eps矢量图文件:out.eps
2、在sh/bash命令窗口中输入:convert -density 200 -trim out.eps out.png (这里的200也可以是300、600,数字越大,图片像素越高)
用在上面那张图片上,出图效果如下:

一点白边都木有哟!
convert是Linux一个非常强大的可以进行图片编辑、转换图片格式的命令,它是ImageMagick的一部分,因此需要先安装ImageMagick才可使用。对于不同版本的Linux,ImageMagic的安装方法如下:
1、CentOS下安装:yum install ImageMagick
2、Ubuntu下安装:apt-get install ImageMagick
对于convert命令,常用的有以下几种:
1、转换图片格式:
convert xxx.jpg xxx.png 将jpeg转成png文件
convert xxx.gif xxx.bmp 将gif转换成bmp图像
convert xxx.tiff xxx.pcx 将tiff转换成pcx图像
convert *.jpg foo.pdf 把多张照片转化成pdf格式
2、改变图像的大小: convert -resize 1024x768 xxx.jpg xxx1.jpg 将图像的像素改为1024*768,注意1024与768之间是小写字母x
convert -sample 50%x50% xxx.jpg xxx1.jpg 将图像的缩减为原来的50%*50%
3、旋转图像:
convert -rotate 270 sky.jpg sky-final.jpg 将图像顺时针旋转270度
4、使用-draw选项,在图像里添加文字:
convert -fill black -pointsize 10 -font helvetica -draw 'text 30,50 "Sunshine" ‘ sun.jpg sunshine.jpg
在图像的(30,40)位置采用10磅的全黑Helvetica字体在sun.jpg图片上写上 Sunshine,并将新图片另存为sunshine.jpg
5、给图像添加边框:
convert -mattecolor "#000000" -frame 60x60 name.jpg re-name.png
这里,"#000000"是边框的颜色(黑色),边框的大小为60x60
也可以用该命令添加边框:convert -border 60x60 -bordercolor "#000000" name.jpg re-name.png
6、其他一些有趣的功能:
上下翻转:
convert -flip foo.png bar.png
左右翻转:
convert -flop foo.png bar.png
反色,形成底片的样子:
convert -negate foo.png bar.png
单色,把图片变为黑白颜色:
convert -monochrome foo.png bar.png
油画效果:
convert -paint 4 foo.png bar.png
将图片向右旋转一定角度:
convert -rotate 30 foo.png bar.png
将图片向左旋转一定角度:
convert -rotate -30 foo.png bar.png
漩涡,以图片的中心作为参照,把图片扭转,形成漩涡的效果:convert -swirl 67 foo.png bar.png
凸起效果:convert -raise 5x5 foo.png bar.png
博客介绍了用NCL绘制png图片出现白边的问题,提出使用convert命令处理。先利用NCL生成ps或eps矢量图,再用convert命令转换为无白边的png图。还介绍了convert命令的安装方法及常用功能,如转换格式、改变大小、旋转等。
2004

被折叠的 条评论
为什么被折叠?



