นักเขียนไม่ได้ทำงานกับคำศัพท์เพียงอย่างเดียว พวกเขามักต้องทำงานกับรูปภาพ การเขียนเอกสารทางเทคนิคเกี่ยวข้องกับการนำเสนอสกรีนช็อตจำนวนมากเพื่อบรรยายเทคโนโลยีและกระบวนการ แพลตฟอร์มเผยแพร่ต่างๆ อาจมีข้อกำหนดต่างๆ สำหรับรูปภาพ เช่น รูปแบบไฟล์หรือขนาดไฟล์
ในฐานะที่ปรึกษา IT และวิศวกรระบบ ผมเขียนเอกสารทางเทคนิคมากมายในรูปของงานส่งมอบให้ลูกค้า โดยทั่วไปจะใช้ Microsoft Word (.doc) เป็นรูปแบบที่กำหนด เอกสารใดๆ ก็สามารถโตขึ้นเร็วเมื่อเพิ่มเนื้อหา ในช่วงแรกๆ สกรีนช็อตมักเป็น bitmap (.bmp) ซึ่งอาจมีขนาดไฟล์ใหญ่มาก เอกสารที่อธิบายการติดตั้งระบบปฏิบัติการบนเซิร์ฟเวอร์อาจกลายเป็นไฟล์ขนาดใหญ่มาก
การลดขนาดรูปภาพโดยไม่ทำให้อ่านไม่ออก เป็นการฝึกซ้อมที่ใช้แรงมาก Bitmap สามารถแปลงเป็นไฟล์ jpeg และภายหลังเป็น png ได้ การแก้ไขยังคงเป็นความท้าทายแม้หลังจากที่ผมเปลี่ยมชุดโปรแกรมสำนักงานเป็น LibreOffice โชคดีที่เครื่องมือสกรีนช็อตส่วนใหญ่วันนี้บันทึกในรูปแบบขนาดเล็กกว่า เช่น png
Opensource.com กำหนดขีดจำกัดบางอย่างสำหรับรูปภาพที่ใช้ในบทความของมัน ผมพัฒนาวิธีสามขั้นตอนอย่างรวดเร็วสำหรับเตรียมรูปภาพสำหรับบทความของผม ขั้นตอนแรกคือการจัดการ staging อย่างฉลาด เช่น ปรับขนาดหน้าต่างหรือเปลี่ยนฟอนต์ สองขั้นตอนเพิ่มเติมกลายเป็นเรื่องซ้ำซากมาก คือ การตรวจสอบว่ารูปภาพไม่เกินขีดจำกัดความกว้าง 600 พิกเซล และการเพิ่มขอบ
สคริปต์ prepimg.sh
ผมเขียนสคริปต์ Bash ชื่อ prepimg.sh เพื่อจัดการงานเหล่านี้ สคริปต์นี้ใช้เครื่องมือสองตัวจากชุด ImageMagick
ปรับขนาดรูปภาพ
ยูทิลิตี้สกรีนช็อตบันทึกรูปภาพไปยังไดเรกทอรี Pictures ด้วยชื่อทั่วไป – เหมือน Screenshot-20210923222312.png สคริปต์ prepimg.sh ของผมตรวจสอบความกว้างพิกเซลของไฟล์ในไดเรกทอรีนี้ และปรับขนาดที่เกินขีดจำกัด ขั้นตอนนี้ใช้โปรแกรม identify จากชุด ImageMagick เพื่อหาความกว้าง (%w)
$ identify -format %w Screenshot-20210903202655.png 1217
ค่าความกว้างถูกกำหนดให้ตัวแปร W เพื่อใช้เปรียบเทียบกับขีดจำกัด 600 ขีดจำกัดนี้สามารถกำหนดได้ผ่านตัวแปร $MAXWIDTH หากความกว้างถูกกำหนดว่าเกิน MAXWIDTH โปรแกรม ImageMagick อีกตัวชื่อ convert จะถูกเรียกเพื่อลดความกว้างของรูปภาพ นี่คือฟังก์ชันประมวลผลรูปภาพจากสคริปต์ของผม:
if [ "$W" -gt "$MAXWIDTH" ]
then
[[ $VERBOSE -gt 0 ]] && echo "${1} is ${W} - reducing"
convert -resize "${MAXWIDTH}" \
"${SCREENSHOTS}"/"${1}" \
"${READY}"/"${1}"
...
รูปภาพจะถูกลดขนาดตามที่จำเป็น และบันทึกไปยังไดเรกทอรีที่แตกต่างกันซึ่งกำหนดโดยตัวแปร $READY ในกรณีนี้ รูปภาพถูกปรับขนาดเล็กน้อย – 598 พิกเซล – เพื่อให้เหลือพื้นที่สำหรับการเพิ่มขอบ ซึ่งผมจะแสดงต่อไป
เพิ่มขอบให้รูปภาพ
บางครั้งรูปภาพอาจดูเหมือนรวมเข้ากับพื้นหลังของหน้าเว็บ เนื่องจากสีพื้นหน้าของรูปภาพจนถึงขอบมีสีเดียวกับพื้นหลังของไซต์ นี่คือตัวอย่าง:
Image by:
รูปภาพไม่มีขอบ (CC BY-SA 4.0)
ตามที่คุณเห็นกับรูปภาพข้างต้น ไม่สามารถบอกได้ว่าขอบของรูปภาพอยู่ที่ไหน ปัญหานี้ไม่ได้จำกัดเพียงสีขาว มันขึ้นอยู่กับแต่ละไซต์และสีธีมที่ใช้ ดังนั้น หากพื้นหลังเป็นสีแดงและขอบรูปภาพก็เป็นสีแดง ปัญหาเดียวกันจะเกิดขึ้น สคริปต์ของผมแก้ปัญหานี้โดยใช้เครื่องมือ convert ตัวเลือก -border เพิ่มขอบให้แต่ละไฟล์รูปภาพขนาด 1 พิกเซล ตัวเลือกนี้เพียงอย่างเดียวพอแล้ว แต่ผมอยากตั้งสีโดยใช้ตัวเลือก -bordercolor นี่คือตัวอย่าง:
convert -bordercolor black -border 1 Screenshot-20210903202655.png
ด้านล่างคือรูปภาพเดียวกันพร้อมขอบ ดูดีนี้ไหม?
Image by:
รูปภาพพร้อมขอบ (CC BY-SA 4.0)
รูปภาพของคุณพร้อมแล้ว
ผมใช้ลูป for เพื่อวนผ่านไดเรกทอรีสกรีนช็อต มันเรียกฟังก์ชัน process_img สำหรับแต่ละไฟล์ ฟังก์ชันนี้จัดการทั้งความกว้างและขอบ โค้ดเต็มรูปแบบทำการตรวจสอบความสมเหตุสมผล เช่น ตรวจสอบว่าไฟล์เป็นรูปภาพจริงๆ
process_img() {
# verify that file is an image file, and then get dimensions
if file "${SCREENSHOTS}"/"${1}" | grep -qE 'image|bitmap'; then
[[ $VERBOSE -gt 0 ]] && echo "${1} is an image"
W=$(identify -format %w "${SCREENSHOTS}"/"${1}")
else
echo "File ${SCREENSHOTS}/${1} is not an image."
W=0
fi
# resize and border
if [ "$W" -gt "$MAXWIDTH" ]
then
[[ $VERBOSE -gt 0 ]] && echo "${1} is ${W} - reducing"
convert -resize "${MAXWIDTH}" \
-bordercolor $BORDER \
-border 1 \
"${SCREENSHOTS}"/"${1}" \
"${READY}"/"${1}"
else
convert -bordercolor $BORDER \
-border 1 \
"${SCREENSHOTS}"/"${1}" \
"${READY}"/"${1}"
fi
}
ขั้นตอนสุดท้ายของสคริปต์คือบันทึกไฟล์ที่ประมวลผลแล้วในซับไดเรกทอรีชื่อ Ready, ซึ่งกำหนดโดยตัวแปรชื่อ $READY สิ่งนี้เก็บไฟล์ต้นฉบับไว้สำหรับการใช้งานต่อไป
การใช้งาน
Prepimg.sh รวมสิ่งอำนวยความสะดวก help ที่คาดหวัง อธิบายอาร์กิวเมนต์และการใช้งาน:
$ prepimg.sh -h prepimg.sh Version 0.7 - written by Alan Formy-Duval prepimg.sh [OPTIONS] --verbose, -v Be verbose --directory, -d Screenshot directory (default: /home/alan/Pictures/Screenshots) --ready, -r Ready directory (default: /home/alan/Pictures/Screenshots/Ready) --border, -b Border color (default: black)
โค้ดและสรุป
โค้ดที่นำเสนอในบทความนี้ไม่สมบูรณ์ และควรถือว่าเป็น pseudocode คุณสามารถดูสคริปต์เต็มรูปแบบใน Git repository ของผม
ชุด ImageMagick เป็นชุดเครื่องมืออันทรงพลังสำหรับจัดการรูปภาพ คุณสามารถทำอะไรได้อีกมากมายนอกเหนือจากฟังก์ชันที่รวมอยู่ในสคริปต์เล็กๆ ของผม ผู้สื่อข่าว Jim Hall ก็เพิ่งเขียนเกี่ยวกับการใช้มันปรับขนาดรูปภาพเมื่อไม่กี่วันก่อน
ไม่ว่าคุณจะชอบ Bash scripting หรือเขียนโค้ดในภาษาอื่น เช่น C หรือ Python การทำอัตโนมัติเป็นความช่วยเหลือที่ยิ่งใหญ่ ครั้งหลังครั้ง ผมเห็นว่ารหัสเล็กน้อยสามารถลดปวดหัวมากมาย และช่วยให้เราใช้เวลาของเราได้อย่างมีประสิทธิภาพมากขึ้น