麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

分享一个IDL写GIF的方法

之前做图的时候,经常要做动态的GIF图,通常情况下我会借助第三方软件(例如:Photoshop)等等来做。今天一个偶然的发现,在IDL中可以直接写入GIF图片,并且测试了一下,效果很是不错,这里共享下代码。

全部代码

PRO create_gif_animation,in_filenamelist, outfname, delay_time
    COMPILE_OPT IDL2

    ;Get the number of input files.
    file_nums = N_ELEMENTS(in_filenamelist)

    IF (file_nums GT 0) AND ~STRCMP(in_filenamelist[0], '') THEN BEGIN
        FOR i = 0, file_nums - 1 DO BEGIN
            img = READ_IMAGE(in_filenamelist[i], red, green, blue)

            ;Get the size information.
            img_s = SIZE(img)

            ;If the dimension of the img is 3-D, then convert it to a index image first.
            IF (img_s[0] EQ 3) THEN BEGIN
                img_idx = COLOR_QUAN(img[0, *, *], img[1, *, *], img[2, *, *], tbl_r, tbl_g, tbl_b)

                ;Reverse array in the second dimension.
                img_idx = REFORM(img_idx)

                WRITE_GIF, outfname, img_idx, tbl_r, tbl_g, tbl_b, $
                            DELAY_TIME = delay_time, /MULTIPLE, REPEAT_COUNT = 0
            ENDIF

            ;If the dimension of the img is 2-D, then write it to the gif file directly.
            IF (img_s[0] EQ 2) THEN BEGIN
                img = REFORM(img)
                IF (N_ELEMENTS(red) GT 0) AND (N_ELEMENTS(green) GT 0) AND (N_ELEMENTS(blue) GT 0) THEN BEGIN

                    WRITE_GIF, outfname, img, red, green, blue, DELAY_TIME = delay_time, /MULTIPLE, REPEAT_COUNT = 0
                ENDIF
            ENDIF
        ENDFOR

        ;Close the file.
        WRITE_GIF, outfname, /CLOSE
    ENDIF
END

方便起见,这里直接将这个方法封装成了一个过程,关于过程和函数的区别以及使用方法,你可以参考这篇文章:IDL中的函数和过程

in_filenamelist:代表整个GIF数组,每张图片就是其中的一维
outfname:输出文件的完整路径+文件名,例如:D:\a.gif
delay_time:每张图片播放的间隔时间

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

已有 3 条评论

  1. 麻辣GIS-GS
    1#
    GS  · 2017-11-14 13:06

    楼主能不能详细点呀。

  2. 麻辣GIS-GS
    2#
    GS  · 2017-11-14 13:08

    不能只有代码呀,对于初学者来说,难的,

      1. 麻辣GIS-Sailor
        Sailor  · 2017-11-14 14:25

        要多详细,需要把什么是GIF也说说么?

留言板(小编看到第一时间回复) 取消回复