กำลังย่อภาพขนาดย่อด้วย ImageMagick (แปลง)?


คำตอบ:


19

สิ่งนี้อธิบายไว้ในเอกสารทางการของ ImageMagick ภายใต้หัวข้อ“ ตัดภาพขนาดย่อให้พอดี” :

อีกทางเลือกหนึ่งคือแทนที่จะตัดภาพให้พอดีกับขนาดภาพขนาดย่อเฉพาะที่เราต้องการแทนที่จะตัดส่วนต่าง ๆ ของภาพที่ไม่พอดีกับขนาดภาพสุดท้ายออก

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

ในฐานะของ IM v6.3.8-3 การตั้งค่าสถานะตัวเลือกการปรับขนาดพิเศษ '^' ถูกเพิ่มเพื่อให้ง่ายขึ้น เราเพิ่งปรับขนาดโดยใช้ธงนี้แล้วครอบส่วนต่าง ๆ ของภาพที่ล้นขนาดที่ต้องการ

และในบริบทของคำสั่งตัวอย่าง:

convert -define jpeg:size=200x200 hatching_orig.jpg  -thumbnail 100x100^ \
          -gravity center -extent 100x100  cut_to_fit.gif

7
อาจเป็น ... คำอธิบายบางประเภท?
Hello71

ฉันชอบคำตอบเปล่า ๆ ของ Ignacio :-)
Ciro Santilli 新疆改造中心法轮功六四事件

55

อิกนาชิโอเชื่อมโยงกับเอกสารที่ถูกต้อง แต่ฉันจะวางเอกสารไว้ที่นี่เพื่อความสะดวก:

convert -define jpeg:size=200x200 original.jpeg  -thumbnail 100x100^ -gravity center -extent 100x100  thumbnail.jpeg

ในทำนองเดียวกันต่อไปนี้สำหรับ GraphicsMagick:

gm convert -size 200x200 original.jpeg -thumbnail 100x100^ -gravity center -extent 100x100 +profile "*" thumbnail.jpeg

คำอธิบาย:

  • -size 200x200 บอกตัวถอดรหัส jpeg เราเพียงต้องการความละเอียดนี้เพื่อให้สามารถบันทึกหน่วยความจำและอ่านภาพต้นฉบับได้เร็วขึ้น
  • -thumbnail 100x100^ ปรับขนาดอย่างรวดเร็วทำให้ด้านที่สั้นที่สุด 100
  • - gravity center ศูนย์ปฏิบัติการต่อไป
  • -extent 100x100 นำภาพไปใช้กับผ้าใบขนาด 100x100
  • +profile "*" อย่าบันทึก metainfo ใด ๆ ลงใน jpeg (ทำให้รูปภาพเล็กลง)

3
เมื่อฉันใช้มันในบรรทัดคำสั่ง (กราฟิก magick หนึ่ง) ฉันได้ภาพตรงกลางสอง siders เต็มไปด้วยสีขาว ไม่ใช่สิ่งที่อธิบายไว้ในคำถาม ฉันกำลังทำอะไรผิดหรือเปล่า?
Umut Benzer

2
หากคุณกำลังใช้งาน Windows คุณจะต้องเพิ่มอักขระ ^ ขึ้นเป็นสองเท่าเพื่อหลบหนี ตัวอย่างเช่น: -thumbnail 100x100 ^^
George Filippakos

3
ทำไมไม่ขนาด 100x100
สวัสดีชาวโลก

@HelloWorld: อ่าน "Imagemagick Geometry" Google มันจะง่ายต่อการค้นหา
saurabheights

11

นั่นเป็นวิธีที่ง่ายกว่าในการทำ:

คำสั่งต่อไปนี้ปรับขนาดด้านที่เล็กลงเป็น 100 พิกเซลและครอบตัดสี่เหลี่ยมจัตุรัสขนาด 100x100 คุณสามารถเพิ่ม-stripคำสั่งเพื่อลดขนาดไฟล์

convert original.jpg -resize "100^>" -gravity center \ 
                     -crop 100x100+0+0 -strip thumbnail.jpg

ไม่เหมือนกับการพยายามบันทึกหน่วยความจำ แต่ทำในสิ่งที่คุณต้องการและไม่มากไปกว่านั้น นอกจากนี้มันจะไม่ทำให้รูปภาพหรู


เมื่อเพิ่มคำตอบที่ล่าช้าไปยังคำถามด้วยคำตอบที่กำหนดไว้จะเป็นประโยชน์ในการให้คำอธิบายที่เพียงพอว่าทำไมคำตอบของคุณจึงให้สิ่งที่แปลกใหม่และใหม่เมื่อเทียบกับคำตอบอื่น ๆ
Jason Aller

2
ขอบคุณฉันไม่รู้ว่าทำไมคนอื่นถึงเข้าใจคำตอบของพวกเขามากเกินไปเพื่อพยายามเก็บความทรงจำเมื่อ OP ไม่ได้กล่าวถึงเรื่องนี้เลย
สับสน

2

ฉันใช้ graphicsmagick เพื่อสร้างภาพขนาดย่อที่แม่นยำ แต่ฉันขยายภาพด้วยกระดานหมากรุกแทนที่จะตัดส่วนที่ยื่นออกมา

gm convert -limit Threads 1 -size 320x180 pattern:checkerboard -background transparent -gravity center -resize 320x180 -extent 320x180 original.jpg -flatten -resize 112x65! -interlace Line 1 thumb_112x65.jpg

ตัวเลือกอธิบาย

gm convert

// Single threaded seems faster on smaller files
-limit Threads 1 

// Generate a checkerboard of size 320x180.
// Sets the relative size of the checkerboard squares,
// also sets the desired aspect ratio. In my case (16:9)
-size 320x180 pattern:checkerboard 

// Resize the input image and center it on a transparent layer.
-background transparent -gravity center -resize 320x180 -extent 320x180 orig.jpg

// Merge the layers
-flatten 

// Resize the output to the desired
// The ! causes the aspect ratio to be ignored, fixing any rounding errors.
// (Specify a size with the same aspect ratio as the checkerboard.)
-resize 112x65! 

// Use Progressive JPEG Encoding
-interlace Line 

// Output Image
thumb_112x65.jpg

1

ฉันคิดว่าคุณกำลังมองหาสิ่งที่ชอบ:

convert -crop 100x100+50+50 input_image.jpg output_image.jpg 

ที่100x100เป็นขนาดของรูปสี่เหลี่ยมผืนผ้าขั้นสุดท้ายและชดเชย50x50


รูปภาพครอบตัดนั้น แต่ไม่ได้สร้างภาพขนาดย่อ
marioosh

1
@marioosh: ฉันไม่เข้าใจคุณสามารถใช้convert -thumbnail 100x100+50+50 input_image.jpg output_image.jpgสำหรับข้อมูลเพิ่มเติมตรวจสอบการตอบสนอง Igancio Vazquez สำหรับตัวอย่างหรือตรวจสอบเอกสาร
pconcepcion

1

คำสั่งนี้ครอบตัดเป็นสี่เหลี่ยมจัตุรัสแล้วปรับขนาดเป็น 150x150

convert 824-full.jpg -set option:size '%[fx:min(w,h)]x%[fx:min(w,h)]' xc:none +swap -gravity center -composite -resize 150x150  temp.jpg

ตัวเลือกเพิ่มเติมมีอยู่ที่นี่: http://www.imagemagick.org/Usage/thumbnails/#square

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