Изменение размера изображения с помощью mini_magick

Мой сервис имеет как веб-версию, так и версию для iPhone. На iPhone мы гарантируем, что пользователи отправляют квадратную версию, обрезая ее при загрузке. Мы также разрешаем загрузку на веб-сайт, но у нас нет такой функции.

Таким образом, я хотел бы масштабировать любое загруженное изображение, чтобы оно соответствовало области 612 * 612. Каков наилучший способ добиться этого?

Я использую Ruby/mini_magick


person ming yeow    schedule 05.11.2011    source источник


Ответы (1)


Вы бы просто использовали метод resize из MiniMagick, на странице Github есть пример:

https://github.com/minimagick/minimagick

Предположительно, у вас есть изображение в виде набора байтов в памяти, поэтому что-то вроде этого:

image = MiniMagick::Image.read(your_image_bytes)
image.resize('612x612')
scaled_image_bytes = image.to_blob
# Or image.write(filename)

MiniMagick использует стандартные строки геометрии ImageMagick для определения размеров и, согласно точному руководству, геометрия WxH:

Даны максимальные значения высоты и ширины, соотношение сторон сохранено.

поэтому использование '612x612' масштабирует изображение, чтобы оно соответствовало квадрату размером 612 пикселей, сохраняя при этом соотношение сторон.

Вы также можете использовать Jcrop, чтобы позволить вашим веб-пользователям обрезать загруженные ими изображения, чтобы они помещались в квадратный.

person mu is too short    schedule 06.11.2011
comment
Еще одна жемчужина, на которую стоит обратить внимание, — это CarrierWave, которая значительно упрощает работу с MiniMagick. Есть несколько вариантов, в том числе resize_and_pad, которые гарантируют, что у вас будет квадратное изображение, но без обрезки чего-либо важного. Мы используем это в сочетании с JCrop. - person Tom Harrison; 14.11.2011