Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

MiniMagick Gem:วิธีแปลงรูปภาพโดยใช้ Ruby

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

ชอบปรับขนาดเพื่อประหยัดพื้นที่และดาวน์โหลดเร็วขึ้นสำหรับผู้ใช้ของคุณ

แต่คุณทำสิ่งนี้ได้อย่างไร

MiniMagick เป็นอัญมณีที่สามารถช่วยคุณได้

เป็นอินเทอร์เฟซระหว่างโปรแกรม ImageMagick และรหัส Ruby ของคุณ

ช่วยให้คุณใช้การเปลี่ยนแปลงทุกประเภทกับรูปภาพเพื่อปรับแต่งตามความต้องการของคุณ!

ก่อน :

คุณต้อง ติดตั้ง ImageMagick โดยใช้ตัวจัดการแพ็คเกจระบบปฏิบัติการของคุณ หรือดาวน์โหลดตัวติดตั้งจากเว็บไซต์ของโปรเจ็กต์

ตามด้วย mini_magick คุณสามารถใช้วิธี Ruby ปกติในการเปลี่ยนแปลงรูปภาพของคุณ

มาดูตัวอย่างกัน!

การเปิดภาพ

คุณสามารถเปิดภาพได้สองวิธี:

  1. MiniMagick::Image.open => ทำสำเนารูปภาพ
  2. MiniMagick::Image.new => เปลี่ยนภาพต้นฉบับ

open method ใช้ทั้งชื่อไฟล์และ URL คุณจึงสามารถดึงรูปภาพจากเว็บได้โดยตรง

ฉันจะใช้รูปภาพนี้จาก Unsplash ซึ่งเป็นไซต์แบ่งปันรูปภาพฟรี

MiniMagick Gem:วิธีแปลงรูปภาพโดยใช้ Ruby

โหลดภาพได้แบบนี้ครับ :

require 'mini_magick'

image = MiniMagick::Image.open(
  "https://images.unsplash.com/photo-1516295615676-7ae4303c1c63"
)

เมื่อคุณโหลดรูปภาพแล้ว คุณสามารถรับข้อมูลเกี่ยวกับรูปภาพได้ เช่น ขนาด ขนาด รูปแบบ ฯลฯ

ตามนี้ :

image.dimensions
# [3963, 5944]

image.type
# "JPEG"

image.human_size
# "20.7663MB"

นี่เป็นภาพขนาดใหญ่ ดังนั้นให้ปรับขนาดมัน!

นอกจากนี้ ฉันอยากหมุนมันให้เป็นแนวนอนแทนที่จะเป็นแนวตั้ง

ปรับขนาดและหมุน

คุณสามารถปรับขนาดรูปภาพดังนี้:

image.resize "500x500"

สิ่งนี้ให้มิติที่แน่นอนแก่คุณ แต่ถ้าคุณต้องการปรับขนาดภาพเป็นเปอร์เซ็นต์โดยที่ยังคงอัตราส่วนภาพไว้…

คุณทำได้ :

image.resize "25%"

นี่คือการปรับขนาดเป็น 25% ของขนาดดั้งเดิม ไม่ใช่การปรับขนาด BY 25%

ตอนนี้ :

คุณต้องใช้การเปลี่ยนแปลงโดยการเขียนไฟล์กลับไปที่ดิสก์

ตามนี้ :

image.write("/tmp/new_image.jpg")

หากคุณเปิดรูปภาพเพื่อแก้ไขโดยตรง (โดยใช้ new แทนที่จะ open ) จากนั้นคุณไม่จำเป็นต้องใช้ write .

วิธีการครอบตัดรูปภาพ

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

ไวยากรณ์คือสิ่งนี้ :

<width> x <height> +<xoffset> +<yoffset>

ตัวอย่างเช่น หากคุณต้องการตัดครึ่งล่างของรูปภาพ:

image.crop "100%x50%+0+0"

สำหรับการครอบตัดรูปภาพในแนวตั้งครึ่งหนึ่ง:

image.crop "50%x100%+0+0"

คุณสามารถลองเล่นกับตัวเลขเหล่านี้ได้จนกว่าจะพบพืชผลที่ต้องการ

การสร้างภาพโค้งมน

หากคุณต้องการทำให้รูปภาพของคุณโค้งมน คุณจะต้องรวมวิธีการต่างๆ เข้าด้วยกัน

ถูกใจสิ่งนี้ :

MiniMagick::Tool::Convert.new do |img|
  img.size '3900x5000'
  img <<   'xc:transparent'

  img.fill "apple.jpg"

  img.draw "translate 2000, 2500 circle 0,0 2000,0"
  img.trim

  img << 'circle.png'
end

การทำเช่นนี้จะสร้างพื้นที่ว่างในขนาดที่กำหนด ซึ่งควรเป็นขนาดของรูปภาพที่คุณต้องการปัดเศษ

แล้ว :

ผืนผ้าใบนี้เต็มไปด้วยรูปภาพ วงกลมถูกวาดไว้ตรงกลาง และทุกอย่างที่อยู่รอบวงกลมจะถูกลบออก

สุดท้าย รูปภาพจะถูกบันทึกเป็น “circle.png”

สังเกตว่า translate 2000, 2500 คือพิกัดตรงกลางผืนผ้าใบ

ในขณะที่ 2000 ใน circle 0,0 2000,0 คือรัศมีของวงกลม

วิธีการเพิ่มเส้นขอบด้วย MiniMagick

การเพิ่มเส้นขอบเป็นสิ่งที่ง่ายที่สุดในโลกด้วย mini_magick .

ตัวอย่าง :

img.border 10

คุณสามารถตั้งค่าสีดังนี้:

img.bordercolor("white")

อย่าลืม write การเปลี่ยนแปลงของคุณหากคุณใช้ open แทน new .

การปรับภาพให้เหมาะสม

ปรับแต่งรูปภาพได้นอกจากทำให้เล็กลง

ตัวอย่างเช่น คุณสามารถใช้ strip วิธีการใน mini_magick เพื่อลบข้อมูลเมตา

ถูกใจสิ่งนี้ :

image.strip

หากคุณต้องการเพิ่มประสิทธิภาพพิเศษ คุณสามารถใช้อัญมณีเช่น image_optim .

ถูกใจสิ่งนี้ :

require 'image_optim'

image_optim.optimize_image!('orange.jpg')

ชมวิดีโอการสอน

สรุป

คุณได้เรียนรู้วิธีเปลี่ยนรูปภาพ (หมุน ปรับขนาด ครอบตัด) โดยใช้ mini_magick อัญมณีทับทิม!

ขอบคุณสำหรับการอ่าน