ฉันจะเปลี่ยนขนาดผ้าใบของ PNG ด้วย ImageMagick ได้อย่างไร (GraphicsMagick) (ทำอย่างไรจึงจะโปร่งใสได้อย่างไร)


9

อีกวิธีหนึ่ง: ฉันจะใช้ PNG ที่ไม่เป็นสี่เหลี่ยมได้อย่างไรและ "กรอก" ส่วนที่เหลือ "ของภาพด้วยความโปร่งใสเพื่อให้ภาพสี่เหลี่ยมที่เกิดขึ้นมีภาพต้นฉบับที่อยู่กึ่งกลางสี่เหลี่ยม

อย่างที่สุดสิ่งที่ฉันต้องการคือการถ่ายภาพทุกรูปแบบที่รองรับ GM ได้ทุกขนาดและสร้าง PNG แบบลดขนาดลง (กล่าวคือสูงสุด 40 พิกเซลสำหรับมิติใดมิติหนึ่ง) โดยมีการรักษาอัตราส่วนกว้างยาว ภาพต้นฉบับและใช้หน้ากากโปร่งใสขนาด 40 x 40 PNG ที่เตรียมไว้แล้ว

ฉันรู้วิธีลดขนาดและรักษาอัตราส่วนภาพไว้แล้ว ฉันมีคำสั่งสำหรับการใช้งานคอมโพสิตแล้ว ชิ้นที่ขาดหายไปของฉันเพียงอย่างเดียวคือรูปภาพที่ไม่ใช่สี่เหลี่ยมจัตุรัสที่ทำให้เป็นสี่เหลี่ยม (ซ้อนทับด้วยความโปร่งใส)

คำสั่งเดียวที่ต้องการ; ยอมรับหลายห่วงโซ่

(แก้ไข)

ข้อมูลเพิ่มเติม: นี่คือคำสั่งผสมที่ฉันใช้:

gm composite -compose copyopacity mask.png source-and-target.png source-and-target.png

ที่ mask.png มีพิกเซลสีขาวสำหรับสิ่งที่ฉันต้องการเก็บไว้ใน source-and-target.png และพิกเซลโปร่งใสสำหรับสิ่งที่ฉันต้องการลบ (และกลายเป็นโปร่งใส) ของ source-and-target.png

คำตอบ:


7

คำสั่งนี้จะใช้ไฟล์อินพุตขนาดใดก็ได้และเหมาะสมที่สุดกับสี่เหลี่ยมจัตุรัสขนาด 40x40 และแผ่นด้วยความโปร่งใส

convert \
   original.png \
  -thumbnail '40x40>' \
  -background transparent \
  -gravity center \
  -extent 40x40 \
  -compose Copy_Opacity \
  -composite mask.png \
   original-resized.png

gravityตัวเลือกที่ช่วยให้มั่นใจได้ภาพที่เป็นศูนย์กลางในทั้งสองทิศทางและtransparentถูกนำมาใช้ในทุกที่ที่ไม่มีพิกเซล จากนั้นการประพันธ์จะเสร็จสิ้นด้วยการmask.png


ดังนั้นเราไม่สามารถทำได้ในนัดเดียวด้วยcomposite?
Pistos

@Pistos ฉันไม่ชัดเจนในสิ่งที่คุณกำลังทำกับคอมโพสิต - มันเป็นเพียงหน้ากากโปร่งใสเพื่อซ่อน / แสดงบางส่วนของภาพขนาดย่อหลังจากปรับขนาด? คุณสามารถแก้ไขและเพิ่มลำดับคำสั่งที่คุณมีจนถึงตอนนี้เพื่อให้เราสามารถดูว่าสามารถรวมกันได้หรือไม่
พอล

@Pistos ฉันคิดว่าวิธีที่ดีที่สุดคือการทำคอมโพสิตด้วย - แปลงไม่ใช่วิธีอื่น ฉันได้อัปเดตคำตอบข้างต้นแล้ว
พอล

ปิด แต่ไม่มาก คำสั่งของคุณไม่ทำงานตามที่เป็นอยู่และถึงแม้จะมีการปรับปรุง แต่ก็ไม่ได้ผล ไม่เป็นไรฉันจะทำสองขั้นตอน ฉันจะอัปเดตสิ่งต่าง ๆ ที่นี่หลังจากได้รับขั้นตอนสุดท้ายโดยใช้ขั้นตอน CLI ขอบคุณอีกครั้ง.
Pistos

ฉันจะเพิ่ม-filter Catromก่อนthumbnailตัวเลือกเพราะจากประสบการณ์ของฉันมันมักจะให้ภาพที่มีคุณภาพสูงขึ้น
thdoan

6

คำสั่งเดียวในการแปลง PNG ทั้งหมดจากโฟลเดอร์เดียว:

mogrify \
 -resize 50x50 \
 -background transparent \
 -gravity center \
 -extent 50x50 \
 -format png \
 -path resized \
 *.png

mogrifyเป็นคำสั่งจากแพ็คเกจ ImageMagick คุณต้องสร้างไดเรกทอรีผลลัพธ์ก่อน


ทำได้ดีนี่. BTW, หากคุณรู้สึกอยากผจญภัยคุณสามารถละเว้น-path resizedการแก้ไขไฟล์ได้
aaronk6

มันเยี่ยมมาก ในการติดตั้งของฉัน (OSX, 1.3.35) มันgm mogrifyและแทนที่จะ-path resizedใช้-create-directories -output-directory resized
Blake

1

นี่คือสิ่งที่ฉันไปด้วยในที่สุด กระบวนการสองขั้นตอน:

gm convert \
  -thumbnail '40x40>' \
  -background transparent \
  -gravity center \
  -extent 40x40 \
   original.png \
   intermediate.png

gm composite \
  -compose in \
   intermediate.png \
   mask.png \
   out.png

ตำแหน่งที่ mask.png เป็นพิกเซลสีขาวสำหรับสิ่งที่ฉันต้องการเก็บไว้และพิกเซลโปร่งใสสำหรับสิ่งที่ฉันต้องการปกปิด (ทิ้ง)

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