This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
>From: Sridharareddy Duggireddy <address@hidden> >Organization: USF >Keywords: 200301061638.h06Gcdt04784 McIDAS web animated GIF Sridhara, >I have tried the mcidas commands you have given for displaying the loop >of images. They are working. I have to loop these images in a webpage. The typical approach that sites use for looping images in web pages is to use a Java applet GIF looper. This is what we do in: http://mcdemo.unidata.ucar.edu >For displaying the single image I was doing like this. > >First I was calling the following command from a shell script >" mcenv -g 32 -i 128 -f "$geom" $MYBIN/mk_mcsfcloop datasetname imagename " > >Then in mk_mcsfcloop i was calling the commands > sfcplot.k PLOT OLAY FRAME > sfccon.k PMSL OLAY FRAME > >and Then I was saving the image using > > frmsave.k 1 imagename. Right. Here you have a single GIF image that is easily displayed using the <img> tag approach that Jim Koermer's example uses. >Then i was coming back to shell script and displaying the image using ><img> tag. Right. >Now in order to display the loop of images I should have 10 frames . How >can i create 10 frames using mcenv? 'mcenv' allows you to create a frame or a number of frames. Here is the online help for 'mcenv' you can get in McIDAS: HELP mcenv mcenv -- execute in a McIDAS environment mcenv [-f <framespec>]... [-e <bytes>] [prog arg...] Remarks: Command line arguments: -f <framespec> specifies a set of frames to include in the McIDAS environment A <framespec> of the form N@LxE in which N, L, and E represent integers, and x is the small letter x, means to allocate N frames of L lines by E elements. A <framespec> of the form LxE means to allocate 1 frame of L lines by E elements. A <framespec> of the form N means to allocate N frames of 480 lines by 640 elements. Multiple -f options can be given in order to specify frames of different sizes. If there are no -f options, the default environment is as if ``-f 1@480x640'' were given. -e <bytes> specifies how large to make the MAKFRM free space pool in the McIDAS environment The <bytes> number can be suffixed with a k or an m, for kilobytes or megabytes. If there is no -e option, the default environment is as if ``-e 0'' were given. -g <number> specifies number of graphics color levels (McIDAS-X only) -i <number> specifies number of image color levels (McIDAS-X only) prog arg... program to run in the McIDAS environment If no program is specified, the default program to run is $SHELL. The mcenv command creates an environment (shared memory block) and then forks and execs the given program. When the program exits, mcenv removes the shared memory object and exits. mcenv processes can nest; commands run under an inner mcenv can not see or affect the environment created by the outer mcenv. ---------- 'mcenv' defaults to the creation of a single frame of 480x640 with 48 image colors and 8 graphic color levels. If you wanted to create a mini-session using 'mcenv' that is 10 800x600 frames long with 64 image levels and 16 grphic color levels, you would use a construct like: mcenv -f10@600x800 -g 16 -i 64 << EOF imgdisp.k RTIMAGES/GE-IR ALL=1 10 STA=KTBW EU=IMAGE MAG=2 SF=YES REFRESH='EG (GRA);BAR GRA=(GRA);MAP H GRA=(GRA)' lb.k 1 10 wait.k 5 loopit.k \"SFCPLOT T OLAY FRAME loopit.k \"SFCCON PMSL OLAY FRAME frmsave.k 1 frame1.gif frmsave.k 2 frame2.gif frmsave.k 3 frame3.gif # etc. exit EOF You can use the McIDAS REPEAT command to save GIFs of each frame in one go as follows: mcenv -f10@600x800 -g 16 -i 64 << EOF te.k SAVEFRM \"FRMSAVE !1 frame!1.gif imgdisp.k RTIMAGES/GE-IR ALL=1 10 STA=KTBW EU=IMAGE MAG=2 SF=YES REFRESH='EG (GRA);BAR GRA=(GRA);MAP H GRA=(GRA)' lb.k 1 10 wait.k 5 loopit.k \"SFCPLOT T OLAY FRAME loopit.k \"SFCCON PMSL OLAY FRAME repeat.k SAVEFRM 1 TO 10 BY 1 exit EOF You may have to escape the '!1': te.k SAVEFRM \"FRMSAVE \!1 frame\!1.gif >I think i have to store these images >and display them. Yes, you should create a GIF of each image and then use a GIF looper. >in the previous mail >you have given commands to display the loop of images. Yes, in McIDAS, not in a web page. >How should i use them in the shell script. That means where shall i >use .k extension for example in "LOOPIT "SFCPLOT PLOT OLAY FRAME" , LB 1 >10, DR 9*3 20 " ? loopit.k \"SFCPLOT PLOT OLAY FRAME lb.k 1 10 >How should i display these 10 images in a webpage using <img> tag ? If you don't want to use a GIF looper, you can do something like save each frame into its own GIF file, and then use ImageMagick (available in Linux) to create an animated GIF. Once you have an animated GIF, you can display it in the exact same way as you do a single frame GIF. The ImageMagick function to use is 'convert'. Here is a simple example of using 'convert' to create a single animated GIF file out of 10 GIF files: #!/bin/csh -f convert \ -loop 9999 \ -delay 50 \ frame1.gif \ frame2.gif \ frame3.gif \ frame4.gif \ frame5.gif \ frame6.gif \ frame7.gif \ frame8.gif \ frame9.gif \ -delay 200 \ frame10.gif \ GE-IRloop.gif The resultant animated GIF loop will pause '50' time increments (this is platform-dependent) on the first 9 frames and '200' time increments on the last frame of the loop. >Please explain the above questions If you are interested in the Java GIF looper approach, I can bundle up the Java applet we use (developed by Tom Whittaker of SSEC) and make it available to you. Personally, I think the animated GIF approach is a good one to get started with. > regards, > Sridhara. Tom