นักเขียนไม่เพียงแต่ทำงานกับคำพูดเท่านั้น แต่ยังต้องทำงานกับรูปภาพด้วย การเขียนทางเทคนิคเกี่ยวข้องกับการนำเสนอภาพหน้าจอจำนวนมากเพื่อถ่ายทอดเทคโนโลยีและกระบวนการ แพลตฟอร์มการเผยแพร่ที่แตกต่างกันอาจมีข้อกำหนดต่างๆ สำหรับรูปภาพ เช่น รูปแบบรูปภาพหรือขนาดไฟล์
ในฐานะที่ปรึกษาด้านไอทีและวิศวกรระบบ ฉันได้เขียนเอกสารทางเทคนิคจำนวนมากเป็นผลงานของลูกค้า โดยทั่วไปจะใช้ Microsoft Word (.doc) เป็นรูปแบบที่จำเป็น เอกสารใด ๆ สามารถเติบโตอย่างรวดเร็วเมื่อมีการเพิ่มเนื้อหา ในช่วงแรกๆ ภาพหน้าจอมักเป็นบิตแมป (.bmp) ซึ่งอาจมีขนาดไฟล์ที่ใหญ่มาก เอกสารที่อธิบายการติดตั้งระบบปฏิบัติการบนเซิร์ฟเวอร์อาจเป็นไฟล์ขนาดใหญ่มาก
การลดขนาดภาพโดยไม่ทำให้ไม่สามารถอ่านได้เป็นการฝึกที่ลำบาก บิตแมปสามารถแปลงเป็นไฟล์ jpeg และไฟล์ png ในภายหลังได้ การแก้ไขยังคงเป็นเรื่องท้าทายแม้ในเวลาต่อมาเมื่อฉันเปลี่ยนชุดสำนักงานเป็น LibreOffice โชคดีที่เครื่องมือจับภาพหน้าจอส่วนใหญ่ในปัจจุบันบันทึกในรูปแบบที่เล็กกว่า เช่น png
Opensource.com กำหนดข้อจำกัดบางอย่างเกี่ยวกับรูปภาพที่ใช้ในบทความ ฉันพัฒนาวิธีการสามขั้นตอนอย่างรวดเร็วในการเตรียมรูปภาพสำหรับบทความของฉัน ขั้นตอนแรกคือต้องฉลาดเกี่ยวกับการจัดเตรียม เช่น การปรับขนาดหน้าต่างหรือเปลี่ยนแบบอักษร อีกสองขั้นตอนกลายเป็นเรื่องซ้ำซากจำเจ ทั้งนี้เพื่อให้แน่ใจว่ารูปภาพจะไม่เกินขีดจำกัดความกว้าง 600 พิกเซลและเพื่อใช้เส้นขอบ
สคริปต์ prepimg.sh
ฉันเขียนสคริปต์ทุบตีชื่อ prepimg.sh
เพื่อจัดการกับงานเหล่านี้ สคริปต์นี้ใช้เครื่องมือสองอย่างจากชุด ImageMagick
ปรับขนาดภาพ
ยูทิลิตี้สกรีนช็อตจะบันทึกรูปภาพไปยัง Pictures
ไดเรกทอรีที่มีชื่อทั่วไป เช่น Screenshot-20210923222312.png
. prepimg.sh
ของฉัน สคริปต์ตรวจสอบความกว้างพิกเซลของไฟล์ในไดเร็กทอรีนี้และปรับขนาดที่เกินขีดจำกัด ขั้นตอนนี้ใช้ ระบุ โปรแกรมจากชุด ImageMagick เพื่อกำหนดความกว้าง (%w)
$ identify -format %w Screenshot-20210903202655.png
1217
ค่าความกว้างถูกกำหนดให้กับตัวแปร W
เพื่อใช้เป็นตัวเปรียบเทียบถึงขีดจำกัด 600 ขีด จำกัด นั้นกำหนดค่าได้ผ่านตัวแปร $MAXWIDTH
. หากกำหนดความกว้างเกิน MAXWIDTH โปรแกรม ImageMagick อื่นชื่อ แปลง เรียกว่าลดความกว้างของภาพ นี่คือฟังก์ชันการประมวลผลรูปภาพจากสคริปต์ของฉัน:
if [ "$W" -gt "$MAXWIDTH" ]
then
[[ $VERBOSE -gt 0 ]] && echo "${1} is ${W} - reducing"
convert -resize "${MAXWIDTH}" \
"${SCREENSHOTS}"/"${1}" \
"${READY}"/"${1}"
...
รูปภาพจะถูกลดขนาดตามความจำเป็นและบันทึกลงในไดเร็กทอรีอื่นที่กำหนดโดย $READY
ตัวแปร. ในกรณีนี้ รูปภาพจะถูกปรับขนาดให้เล็กลงเล็กน้อย —598 พิกเซล—เพื่อให้มีพื้นที่สำหรับการเพิ่มเส้นขอบ ซึ่งฉันจะแสดงต่อไป
เพิ่มเส้นขอบให้กับรูปภาพ
บางครั้งรูปภาพอาจดูเหมือนกลมกลืนไปกับพื้นหลังของหน้าเว็บ เนื่องจากสีพื้นหน้าของรูปภาพออกไปถึงขอบเป็นสีเดียวกับพื้นหลังของไซต์ นี่คือตัวอย่าง:
รูปภาพโดย:
รูปภาพที่ไม่มีเส้นขอบ (CC BY-SA 4.0)
ดังที่คุณเห็นในภาพด้านบน เป็นไปไม่ได้ที่จะบอกได้ว่าขอบของภาพอยู่ที่ใด ปัญหานี้ไม่ได้จำกัดอยู่ที่สีขาวเท่านั้น ขึ้นอยู่กับแต่ละไซต์และสีของธีมที่ใช้ ดังนั้น หากพื้นหลังเป็นสีแดงและขอบภาพเป็นสีแดงด้วย ปัญหาเดียวกันนี้ก็จะเกิดขึ้น สคริปต์ของฉันแก้ปัญหานี้โดยใช้ แปลง เครื่องมือ. -เส้นขอบ ตัวเลือกเพิ่มเส้นขอบให้กับไฟล์รูปภาพแต่ละไฟล์ที่มีขนาด 1 พิกเซล ตัวเลือกนี้เพียงอย่างเดียวก็เพียงพอแล้ว แต่ฉันยังต้องการตั้งค่าสีโดยใช้ -bordercolor ตัวเลือก. นี่คือตัวอย่าง:
convert -bordercolor black -border 1 Screenshot-20210903202655.png
ด้านล่างเป็นภาพเดียวกันกับเส้นขอบ นั่นดูไม่ดีกว่าเหรอ
รูปภาพโดย:
รูปภาพที่มีเส้นขอบ (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
รวมสิ่งอำนวยความสะดวกความช่วยเหลือที่คาดไว้ซึ่งอธิบายข้อโต้แย้งและการใช้งาน:
$ 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)
โค้ดและบทสรุป
รหัสที่นำเสนอในบทความไม่สมบูรณ์และควรได้รับการพิจารณาว่าเป็นรหัสเทียม คุณสามารถดูสคริปต์ทั้งหมดได้ในที่เก็บ Git ของฉัน
ชุด ImageMagick เป็นชุดเครื่องมือที่มีประสิทธิภาพสำหรับจัดการรูปภาพ คุณสามารถทำสิ่งต่างๆ ได้อีกมากมายนอกเหนือจากฟังก์ชันที่รวมอยู่ในสคริปต์เล็กๆ ของฉัน ผู้สื่อข่าว Jim Hall เพิ่งเขียนเกี่ยวกับการใช้เพื่อปรับขนาดรูปภาพ
ไม่ว่าคุณจะชอบเขียนสคริปต์ Bash หรือเขียนโค้ดในภาษาอื่น เช่น C หรือ Python การทำงานอัตโนมัติก็ช่วยได้มาก ครั้งแล้วครั้งเล่า ฉันได้เห็นแล้วว่าโค้ดเล็กๆ น้อยๆ สามารถลดอาการปวดหัวมากมายได้อย่างไร และช่วยให้เราใช้เวลาของเราได้ดีขึ้น