วิธีการ batch ปรับขนาดภาพทั้งหมดในโฟลเดอร์ (รวมถึงโฟลเดอร์ย่อย)?


11

ฉันมีขนาดใหญ่ 12GB แกลเลอรี่บนเซิร์ฟเวอร์เต็มไปด้วยภาพในโฟลเดอร์ย่อยต่างๆ ไฟล์เหล่านั้นใหญ่เกินไปและไม่ได้ใช้ความละเอียดเต็ม ฉันจำเป็นต้องปรับขนาดภาพทั้งหมดให้มีความกว้าง 820px (รักษาสัดส่วน) ดังนั้นคำถามของฉันคือ - ฉันจะสร้างสคริปต์การรวบรวมข้อมูลบางประเภทซึ่งจะปรับขนาดรูปภาพทั้งหมดให้ใหญ่ขึ้นแล้ว 820px และบันทึกทับไฟล์ต้นฉบับทับได้อย่างไร

หวังว่าคุณสามารถช่วยฉัน :-) ขอบคุณล่วงหน้า


3
find . -name "*.jpg" -exec mogrify -resize 820x {} +จะทำทุกอย่าง ถ้าคุณไม่ต้องการที่จะดำเนินการ "น้อยกว่า 820px" คนที่มีบางตัวเลือกที่นี่
don_crissti

คำตอบ:


13

เครื่องมือ ImageMagick แปลงหรือ mogrify จะทำงาน

คุณสามารถรับได้ผ่านผู้จัดการแพคเกจของคุณหรือแหล่ง / rpms ที่นี่: http://www.imagemagick.org/script/binary-releases.php#unix

การใช้งานขั้นพื้นฐาน:

$ mogrify -resize 820x *.jpg

หากคุณต้องการการสอบถามซ้ำ:

find . -name '*.jpg' -execdir mogrify -resize 820x {} \;

ฉันไม่คิดว่า "ความกว้าง 820px (รักษาสัดส่วน)" หมายถึง "การปรับขนาดเป็น 820x820" มันค่อนข้างคล้ายกับ "ความกว้าง 820px และอะไรก็ตามที่มีสัดส่วนสูง";) นอกจากนี้สิ่งนี้ไม่สามารถจัดการการเรียกซ้ำได้
Erathiel

1
จุดดี. แก้ไข!

ถ้าคุณต้องการที่จะทำให้มันปรับขนาดถ้ามันมีขนาดใหญ่กว่าขนาดที่กำหนดไว้และยังคงรักษาอัตราส่วนคุณสามารถเปลี่ยนเป็น: find . -name '*.jpg' -execdir mogrify -resize '820x620>' {} \;
OpensaurusRex

2
ข้อควรระวัง: สิ่งนี้จะเขียนทับภาพที่มีอยู่ของคุณ
sudo

ที่เกี่ยวข้อง: ฉันจะควบคุมอัตราการบีบอัดของ mogrify ได้อย่างไร (ผู้ใช้ระดับสูง)
Marc.2377

5

ใช้convertในการทำงาน

convert -resize "1024x768>" origIMG destIMGจะปรับขนาด origIMG เป็น 1024x768 โดยรักษาอัตราส่วนและปรับขนาดเฉพาะในกรณีที่ภาพมีขนาดมากกว่า 1024 การจัดเก็บภาพใหม่ใน destIMG หลังจากนั้นคุณสามารถย้าย destIMG ไปที่ต้นฉบับ

findใช้ห่วงการเดินทางผ่านไดเรกทอรีหรือการใช้งานของคุณทั้งหมด


คุณจะแก้ไขคำสั่งนี้เพื่อเขียนทับอิมเมจต้นฉบับด้วยภาพที่ลดขนาดแล้วในขณะที่เรียกใช้ซ้ำอีกครั้งได้findอย่างไร
Simon East
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.