imagemagick: การแก้ไข multiple pages tif
ยังหาโปรแกรมที่ใช้แก้ไขภาพ tif แบบหลายหน้า แบบ Imaging for Windows บนลินุกซ์ไม่ได้
ก็คงต้องใช้แบบบรรทัดคำสั่งไปพลาง ๆ ก่อน
ขั้นตอนคือ
ต้องลง ImageMagick ก่อน
$ sudo aptitude install imagemagick
แตกไฟล์ tif แบบหลายหน้าออกมาเป็น แบบหน้าเดียวหลายไฟล์
$ convert image.tif x%d.tif
แก้ไขหน้าที่ต้องการจากไฟล์ที่แตกออกมาแล้ว ด้วย gimp สมมุติว่าเป็นหน้า 2
$ gimp x2.tif
เมื่อบันทึกเรียบร้อยแล้ว ก็รวมกลับเป็นไฟล์เดียวตามเดิม สมมุติว่ามีทั้งหมด 3 ไฟล์
$ convert x1.tif x2.tif x3.tif -adjoin newimage.tif
ถ้าจะให้บีบอัดด้วย
- ถ้าเป็นภาพสีหรือสีเทา
$ convert newimage.tif -compress lzw newimage.tif
- ถ้าเป็นภาพแบบขาวดำ
$ convert newimage.tif -compress fax newimage.tif
สำหรับการบีบอัดมีพารามิเตอร์คือ None BZip Fax Group4 JPEG JPEG2000 Lossless LZW RLE และ Zip
ต้องทดลองเลือกใช้ดูให้เหมาะกับประเภทของภาพ
ลยไฟล์ย่อยทิ้ง
$ rm x?.tif
ดูผลได้ด้วย evince
$ evince newimage.tif
อ้างอิง : debian: บันทึก imagemagick - convert
*** โปรดระวัง - ไม่สามารถใช้กับไฟล์ tif ที่มีข้อมูล annotation ได้ ***
update
จากขั้นตอนข้างบน สามารถนำมาเขียนสคริปต์ทำให้ใช้คำสั่งเดียวได้ ดังนี้
สมมุติว่าจะต้องการแก้ไข image.tif ในหน้า 0 และหน้า 1 สั่งจากสคริปต์ว่า
$ d.edittif image.tif 0 1
gimp จะเปิดไฟล์ออกมา 2 ไฟล์ คือหน้าแรก และหน้าที่สอง
หลังจากบันทึกและปิด gimp แล้ว จะได้ไฟล์ image-new.tif ออกมาเป็นภาพที่แก้ไขแล้วพร้อมบีบอัดเรียบร้อย
เนื้อไฟล์ d.edittif มีดังนี้
$ sudo touch /usr/local/bin/d.edittif
$ sudo chmod 755 /usr/local/bin/d.edittif
$ sudo vi /usr/local/bin/d.edittif
#!/bin/bash # EDIT MULTIPLE PAGES TIF FILE # PREREQUIST: gimp 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: edit 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 EDITFILE="" while [ $1 ]; do EDITFILE="$EDITFILE ~${FILE}$1.tif" shift done ALLFILE=`ls ~${FILE}*.tif` if [ -f $TIF ]; then echo "Process $TIF" /usr/bin/convert $TIF "~$FILE%d.tif" if [ -f "~${FILE}0.tif" ]; then #EDIT WITH gimp echo "Edit $EDITFILE" /usr/bin/gimp $EDITFILE #COMPRESS EACH TIF for i in $ALLFILE; do echo -n "IDENTIFY $i " if /usr/bin/identify -verbose $i | grep "Gray: 1-bits"; then /usr/bin/convert $i -compress fax $i else /usr/bin/convert $i -compress lzw $i fi done /usr/bin/convert $ALLFILE -adjoin -compress lzw "$FILE-new.tif" #COMPRESS & JOIN /usr/bin/evince "$FILE-new.tif" #VIEW NEW FILE rm $ALLFILE #DELETE ALL SPLIT FILE fi fi
ลองบนเดเบียน sid ครับ
- Printer-friendly version
- Log in or register to post comments
- 5363 reads
Recent comments