Computer >> Máy Tính >  >> Lập trình >> Ruby

MiniMagick Gem:Cách biến đổi hình ảnh bằng Ruby

Nếu bạn làm việc với bất kỳ loại hình ảnh nào trong ứng dụng Ruby của mình, rất có thể bạn sẽ muốn thay đổi chúng theo cách này hay cách khác.

Như thay đổi kích thước chúng để tiết kiệm dung lượng và tải xuống nhanh hơn cho người dùng của bạn.

Nhưng làm thế nào bạn có thể làm điều này?

MiniMagick là một viên ngọc quý có thể giúp bạn.

Đó là giao diện giữa chương trình ImageMagick và mã Ruby của bạn.

Nó giúp bạn áp dụng tất cả các loại biến đổi cho hình ảnh của mình để tùy chỉnh chúng theo nhu cầu của bạn!

Đầu tiên :

Bạn cần cài đặt ImageMagick sử dụng trình quản lý gói hệ điều hành của bạn hoặc tải xuống trình cài đặt từ trang web của dự án.

Sau đó với mini_magick bạn có thể sử dụng các phương pháp Ruby thông thường để thay đổi hình ảnh của mình.

Hãy xem một số ví dụ!

Mở hình ảnh

Bạn có thể mở một hình ảnh theo hai cách:

  1. MiniMagick::Image.open => Tạo bản sao của hình ảnh
  2. MiniMagick::Image.new => Thay đổi hình ảnh gốc

open phương thức lấy cả tên tệp và URL, vì vậy bạn có thể lấy hình ảnh trực tiếp từ web.

Tôi sẽ sử dụng hình ảnh này từ Unsplash, một trang web chia sẻ ảnh miễn phí.

MiniMagick Gem:Cách biến đổi hình ảnh bằng Ruby

Bạn có thể tải hình ảnh như thế này :

require 'mini_magick'

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

Bây giờ bạn đã tải hình ảnh, bạn có thể nhận được thông tin về nó, như kích thước, kích thước, định dạng, v.v.

Đây là cách thực hiện :

image.dimensions
# [3963, 5944]

image.type
# "JPEG"

image.human_size
# "20.7663MB"

Đây là một hình ảnh KHỔNG LỒ, vì vậy hãy thay đổi kích thước!

Ngoài ra, tôi muốn xoay nó để nó nằm ngang thay vì dọc.

Thay đổi kích thước và xoay

Bạn có thể thay đổi kích thước một hình ảnh như sau:

image.resize "500x500"

Điều này cung cấp cho bạn một kích thước chính xác, nhưng nếu bạn muốn chia tỷ lệ hình ảnh thành tỷ lệ phần trăm trong khi vẫn giữ nguyên tỷ lệ khung hình…

Bạn có thể làm điều này :

image.resize "25%"

Đây là thay đổi kích thước thành 25% kích thước ban đầu, không phải thay đổi kích thước BY 25%.

Bây giờ :

Bạn cần áp dụng các thay đổi bằng cách ghi tệp trở lại đĩa.

Đây là cách thực hiện :

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

Nếu bạn đã mở hình ảnh để sửa đổi trực tiếp (sử dụng new , thay vì open ) thì bạn không cần sử dụng write .

Cách cắt hình ảnh

Bạn có thể cắt các phần của hình ảnh để loại bỏ những thứ bạn không muốn và thu nhỏ hình ảnh.

Cú pháp là đây :

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

Ví dụ:nếu bạn muốn cắt nửa dưới của hình ảnh:

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

Để cắt một nửa hình ảnh theo chiều dọc:

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

Bạn có thể thử với những con số này cho đến khi tìm thấy cây trồng mà bạn đang tìm kiếm.

Tạo hình ảnh tròn

Nếu bạn đang muốn làm cho hình ảnh của mình tròn trịa, thì bạn sẽ cần kết hợp một số phương pháp.

Như thế này :

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

Điều này tạo ra một canvas trống có kích thước đã cho, đó phải là kích thước của hình ảnh mà bạn muốn làm tròn.

Sau đó :

Canvas này chứa đầy hình ảnh, một vòng tròn được vẽ ở giữa và mọi thứ xung quanh vòng tròn bị xóa.

Cuối cùng, hình ảnh được lưu dưới dạng “circle.png”.

Lưu ý rằng translate 2000, 2500 là tọa độ cho giữa canvas.

Trong khi 2000 trong circle 0,0 2000,0 là bán kính của hình tròn.

Cách thêm đường viền bằng MiniMagick

Thêm đường viền là điều dễ dàng nhất trên thế giới với mini_magick .

Ví dụ :

img.border 10

Bạn có thể đặt màu như sau:

img.bordercolor("white")

Đừng quên write các thay đổi của bạn nếu bạn đang sử dụng open thay vì new .

Tối ưu hóa Hình ảnh

Hình ảnh có thể được tối ưu hóa ngoài việc làm cho chúng nhỏ hơn.

Ví dụ:bạn có thể sử dụng strip trong mini_magick để xóa siêu dữ liệu.

Như thế này :

image.strip

Nếu bạn muốn tối ưu hóa thêm, bạn có thể sử dụng đá quý như image_optim .

Như thế này :

require 'image_optim'

image_optim.optimize_image!('orange.jpg')

Xem hướng dẫn bằng video

Tóm tắt

Bạn đã học cách thay đổi hình ảnh (xoay, thay đổi kích thước, cắt) bằng cách sử dụng mini_magick Đá quý Ruby!

Cảm ơn vì đã đọc.