หากคุณทำงานกับรูปภาพประเภทใดก็ตามในแอปพลิเคชัน Ruby ของคุณ มีโอกาสดีที่คุณจะต้องการเปลี่ยนรูปเหล่านั้นไม่ทางใดก็ทางหนึ่ง
ชอบปรับขนาดเพื่อประหยัดพื้นที่และดาวน์โหลดเร็วขึ้นสำหรับผู้ใช้ของคุณ
แต่คุณทำสิ่งนี้ได้อย่างไร
MiniMagick เป็นอัญมณีที่สามารถช่วยคุณได้
เป็นอินเทอร์เฟซระหว่างโปรแกรม ImageMagick และรหัส Ruby ของคุณ
ช่วยให้คุณใช้การเปลี่ยนแปลงทุกประเภทกับรูปภาพเพื่อปรับแต่งตามความต้องการของคุณ!
ก่อน :
คุณต้อง ติดตั้ง ImageMagick โดยใช้ตัวจัดการแพ็คเกจระบบปฏิบัติการของคุณ หรือดาวน์โหลดตัวติดตั้งจากเว็บไซต์ของโปรเจ็กต์
ตามด้วย mini_magick
คุณสามารถใช้วิธี Ruby ปกติในการเปลี่ยนแปลงรูปภาพของคุณ
มาดูตัวอย่างกัน!
การเปิดภาพ
คุณสามารถเปิดภาพได้สองวิธี:
MiniMagick::Image.open
=> ทำสำเนารูปภาพMiniMagick::Image.new
=> เปลี่ยนภาพต้นฉบับ
open
method ใช้ทั้งชื่อไฟล์และ URL คุณจึงสามารถดึงรูปภาพจากเว็บได้โดยตรง
ฉันจะใช้รูปภาพนี้จาก Unsplash ซึ่งเป็นไซต์แบ่งปันรูปภาพฟรี
โหลดภาพได้แบบนี้ครับ :
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
อัญมณีทับทิม!
ขอบคุณสำหรับการอ่าน