簡述 |
- 本BASH Script可將經由NCAR Graphics或RIPv4所產生的CGM / GMETA檔切割後轉換為GIF / JPG / PNG等格式之圖檔。
註:會使用到ctrans、med、ncgmstat及convert指令,故可能需要先安裝NCAR Graphics以及ImageMagick。
|
操作方式 |
請先於Script中設定以下變數:
- 圖檔輸出資料夾(變數名稱OPDir)
- 輸出檔案之檔頭(變數名稱OUTprefix)
- 輸出檔案之格式(變數名稱OUTformat)
- ctrans指令所用參數(變數名稱ctransArg,預設為-d ps.color)
- convert指令所用參數(變數名稱convertArg,預設為-trim -density 300)
變數設定完畢後即可以以下指令執行本腳本:bash CGMConverter.sh 待處理之圖檔檔名
其中,輸出檔案所支援之格式可用identify -list format指令查詢;另外ctrans、convert指令所用之參數若無特殊需求則無須修改。程式將會依序執行以下動作:
- 檢查ctrans/med/ncgmstat/convert指令之可用性
- 檢查輸入檔案是否存在
- 檢查輸出資料夾是否存在,若不存在會詢問您是否要建立該資料夾
- 以med指令將原始圖檔切割為個別的檔案(轉為ncgm檔暫存於輸出資料夾中)
- 轉檔
- 移除暫存檔
|
授權方式: |
本軟體係採用創用CC-GNU GPL第2.0版或任何更新版本條款授權。 |
|
下載連結 |
版本 |
檔案大小 |
檔案格式 |
日期 |
腳本檔
|
1.0.0.1 |
2.70 KB
|
.sh 腳本檔
|
2014 Aug.1 |
從GitHub上下載:https://github.com/Cypresslin/CGM_GMETA-Image-Converter
運行環境:Linux
註:下載後可在Linux上以chmod u+x賦予其執行之權限。
若您沒有前述之軟體,可至其官方網站下載:ImageMagick
- http://www.imagemagick.org/
NCL
- http://www.ncl.ucar.edu/
|
運行畫面 |
指令列
|
原始碼 |
#!/bin/bash
##############################################################
# CGM/GMETA Image Converter Copyright (C) 2012 Cypresslin #
# This script is distributed under GNU GPLv2. #
# Visit http://cypresslin.web.fc2.com/ for more information. #
# #
# Usage: bash CGMConverter.sh YOUR_CGM.cgm #
##############################################################
#===== User
Modification Area =====
INcgm="$1"
OPDir="./Output/"
OUTprefix="CASEName-"
OUTformat=".png"
# png recommended
ctransArg="-d ps.color"
convertArg="-trim -density 300"
#===== End of User
Modification =====
#
TmpFN="Temp-"
# Temp file prefix
#----- Checking
User-Defined Variables -----
OPDir=${OPDir%"/"}"/"
# Add a "/" after
the output directory variable
OUTformat="."${OUTformat#"."} # Add a "." before the output format
variable
#----- Checking
necessary tools -----
type ctrans
>/dev/null
2>&1 ||
{ echo >&2 "cmd:
ctrans not found, NCARGraphics required."; exit 1; }
type med >/dev/null 2>&1 || { echo >&2 "cmd:
convert not found, NCARGrphics required."; exit 1; }
type ncgmstat >/dev/null 2>&1 || { echo >&2
"cmd: ncgmstat not found,
NCARGraphics required.";
exit 1; }
type convert >/dev/null 2>&1 || { echo >&2 "cmd:
convert not found, ImageMagick required."; exit 1; }
#----- Checking
Existence -----
[ -f $INcgm ] || echo -e "\033[1;31mInput File Does Not Exist!\033[m"; exit 1
# InputFileOK
Frames=`ncgmstat -c $INcgm`
echo -e "File: \033[1;33m$INcgm\033[m , with \033[1;33m$Frames\033[m frames"
if [ -d $OPDir ]; then
#OutputDirOK
echo
-e "Output File goes to \033[1;33m$OPDir\033[m"
else
echo "Output DIR Does Not Exist"
read -p "Creat it Now? (y/n): " MKDIR
if [
$MKDIR = "y" -o $MKDIR = "Y" ]; then
echo -en "mkdir $OPDir : \033[1;31m"
mkdir $OPDir 2>&1 || { echo -e >&2 "\033[m"; exit 1; }
echo -e "\033[1;33mDONE\033[m"
else
echo -e "\033[1;31mProgram Terminated\033[m"
exit 0
fi
fi
#===== Generates
*.ncgm =====
echo -ne "File Splitting...(${INcgm#*.} > .ncgm) \033[1;31m"
med -e "read $INcgm" -e "split $Frames $OPDir$TmpFN"
if [ $? != 0 ]; then
echo
-e "Splitting FAILED \033[m"
exit
1
else
echo
-e "\033[1;33mDONE\033[m"
fi
echo "Format Converting... ncgm > ps >
$OUTformat"
i=0
while [ $i -lt $Frames ]
do
let "i = $i + 1"
TmpFile=`printf $OPDir$TmpFN%03d.ncgm $i`
OutTmp=`printf $OUTprefix%03d$OUTformat $i`
ctrans $TmpFile
$ctransArg >TEMP.ps
convert TEMP.ps $convertArg $OPDir$OutTmp
done
echo "Removing Temporary Files"
rm $OPDir*.ncgm
rm TEMP.ps
echo -e "\033[1;33m=== Job Done ===\033[m"
|
|