imagemagick: ทำ annotate ไฟล์ tif
ความจำเป็นบีบบังคับให้ต้องรีบหาโปรแกรมที่สามารถทำ Annotation ไฟล์ tif ให้ได้
จริง ๆ ก็มีโปรแกรมชื่อ Xournal ที่สามารถทำ annotate บน pdf ได้
ซึ่งเราอาจแปลง tif ไปเป็น pdf ก่อน แล้วจึงค่อยลงมือแก้ไข
แต่พบว่าในรุ่นปัจจุบันบน sid คือ 0.3.3 ยังทำ Text annotation ไม่ได้
และรุ่นล่าสุด 0.4 ความสามารถและการใช้งานยังค่อนข้างด้อยกว่าที่ Kodakimg ทำได้อยู่โข
แต่จากครั้งก่อนที่ทำ การแก้ไข multiple pages tif
คราวนี้เลยได้ความคิดว่าถ้าลองเปลี่ยนจาก Gimp มาเป็น Inkscape เราก็จะได้ความสามารถในการทำ annotation จาก inkscape ในแบบที่ก้าวหน้าสุด ๆ
มีปัญหาที่ต้องแก้คือ inkscape ไม่สามารถแก้ไขไฟล์แบบหลายหน้าได้ (แต่ในอนาคตคงมาแน่ ๆ เห็นอยู่ใน wishlist ลำดับต้น ๆ )
ทางแก้แบบชั่วคราวคือ กระจายไฟล์ลงในไดเรคทอรี่ชั่วคราวที่สร้างไว้ แล้วแก้ไขตามไฟล์ที่เราระบุ
อีกปัญหาคือเวลาแปลงกลับจาก svg มาเป็น tif แบบหลายหน้าแล้ว ข้อมูล annotation ที่เราทำไว้ จะถูกแปลงเป็นข้อมูล bitmap ฝังรวมกับไฟล์ tif ไปหมด
ทางแก้ชั่วคราวอีกเหมือนกันคือ ให้คงไดเรกทอรี่ชั่วคราวนี้ไว้ โดยไม่ลบไฟล์ทิ้งเลย เมื่อเวลาเราใช้คำสั่ง annotate ครั้งใหม่ เขาก็จะมาแก้ไขต่อจากที่เราเคยแก้เอาไว้ โดยต้องยอมรกรุงรังบ้าง
เนื้อแบตช์ไฟล์มีดังนี้
$ sudo vi /usr/local/bin/d.tifannotate
#!/bin/bash
# ANNOTATE MULTIPLE PAGES TIF FILE
# PREREQUIST: inkscape imagemagick evince
#NAME=${0##*/}
NAME=`basename $0`
USAGE=" Usage: $NAME FILE PAGE0 PAGE1 ...
ex1: $NAME image.tif 0 1 = Edit file image.tif on PAGE0 and PAGE1"
phelp()
{
echo "$NAME: annotate multiple pages tif.
$USAGE"
}
while getopts "h" opt; do
case "$opt" in
h) phelp; exit 0;;
*) echo "$Usage" 1>&2; exit 2;;
esac
done
shift $((OPTIND - 1))
if [ ! $2 ]; then
phelp
exit 1;
fi
TIF=$1
shift
FILE=${TIF%.*} #STRIP FILENAME
TEMPDIR="${FILE}~"
EDITFILES=""
while [ $1 ]; do
EDITFILES="$EDITFILES ${FILE}$1.svg"
shift
done
INKSCAPE=`which inkscape`
IDENTIFY=`which identify`
CONVERT=`which convert`
VIEW=`which evince`
if [ -f $TIF ]; then
echo "Process $TIF"
#TEST TEMP DIR EXIST
if ! [ -d $TEMPDIR ]; then
#CREATE TEMP DIR AND SPLIT tif INTO
mkdir $TEMPDIR
$CONVERT $TIF "${TEMPDIR}/$FILE%d.tif"
#ENTER WORKING TEMP DIR
pushd $TEMPDIR
ALLFILE=`ls ${FILE}*.tif`
#CONVERT TO svg
for i in $ALLFILE; do
$INKSCAPE -l "${i%.*}.svg" $i
done
else
#ELSE; EDIT OLD svg
pushd $TEMPDIR
fi
#ANNOTATE
if [ -f "${FILE}0.svg" ]; then
#ANNOTATE WITH inkscape
echo "Edit $EDITFILES"
$INKSCAPE $EDITFILES
ALLSVG=`ls ${FILE}*.svg`
#CONVERT ADJOIN
$CONVERT $ALLSVG -adjoin -compress lzw "$FILE-new.tif" #COMPRESS & JOIN
$VIEW "$FILE-new.tif" #VIEW NEW FILE
mv "$FILE-new.tif" ..
fi
#EXIT WORK DIR
popd
#REMOVE DIR
#rm -rf $TEMPDIR
fi
$ sudo chmod 755 /usr/local/bin/d.tifannotate
เรียกใช้งานด้วยคำสั่ง... โปรแกรม ไฟล์tif หน้าที่ต้องการแก้ไข
$ d.tifannotate FILE.tif 0 1 ...
จะได้ไฟล์ที่ทำ annotate แล้วชื่อ FILE-new.tif และไดเรกทอรี่ชั่วคราวชื่อ FILE~ เหลืออยู่ เพื่อใช้ในการแก้ไขครั้งต่อไป (แต่ถ้าไม่ได้ใช้แน่ ๆ ก็อาจเติมคำสั่งลบต่อท้ายแบตช์ไฟล์ หรือลบด้วยมือเอาทีหลังก็ได้ครับ)
กระท่อนกระแท่นหน่อย เพราะเป็นการทำเพื่อรอโปรแกรมลินุกซ์แนวนี้ในอนาคตตัวจริง ก็พอใช้งานได้ไปพลาง ๆ ก่อนครับ
อย่าลืม เปลี่ยนขนาดกระดาษไน inkscape ด้วย
แต่ติดใจการใช้งาน annotation บน inkscape จริง ๆ แฮะ
- Printer-friendly version
- Log in or register to post comments
- 5222 reads







Recent comments