Изменение размера / обрезка изображений для устройств Android (Rails) - PullRequest
0 голосов
/ 17 ноября 2011

Мне нужно изменить размер / обрезать изображения в разных разрешениях для приложения Android.

Я знаю, что это обычный вопрос, но я не смог найти решение, которое бы подходило мне.

Проблема заключается в том, что разные устройства имели разную диагональ. Администратор загружает в CMS только одно изображение размером 668x1024 (например). Затем мне нужно отправить изображение на устройство с такими разрешениями: 400x600, 540x960 и т. Д. Я не могу просто изменить размер каждого изображения, потому что на телефоне появятся фоновые линии.

Итак, я или нарушаю соотношение сторон (это нехорошо, потому что картинка становится некрасивой) или надо обрезать изображение. Но из-за разных пропорций это трудно сделать.

Я пытался мини-магия и g1nn13-image-science , но в первом я не могу взять текущая ширина и высота изображений (и из-за этого я не могу реализовать алгоритм обрезки), а вторая выдает ошибку, когда я пытаюсь потребовать image_science: «нет такого файла для загрузки - встроенный»

Все помощь и советы приветствуются: некоторые решения о том, как это сделать (может быть, не обрезка, а другое решение?) Или драгоценные камни, которые могут мне помочь.

Спасибо.

ОТВЕТ: Я использовал fastimage gem для определения текущей высоты и ширины изображения и метод minimagick gem image.shave .

Пример:

current_w, current_h = FastImage.size(object.attach.path)
if current_w < current_h
  remove_h = ((current_h - height)/2).round
  image.shave("0x#{remove_h}")
  remove_w = ((current_w - width)/2).round
  image.shave("#{remove_w}x0")
end

Ответы [ 3 ]

1 голос
/ 17 ноября 2011

Для стоечных приложений есть хороший драгоценный камень под названием стрекоза.

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

Вот краткое введение в этот драгоценный камень

Обзор:

Android == (400x600) => Rails (ImagesController # show) ===> image_url (400x600) .jpg

0 голосов
/ 17 ноября 2011

Возможно, это соответствует вашим потребностям, http://www.gra2.com/article.php/using-rmagick-imagemagick-rails

, если вы не хотите использовать какой-либо драгоценный камень, вы можете добраться до установленных программ с помощью рельсов

system

команда.

0 голосов
/ 17 ноября 2011

Попробуйте использовать скрепку, она использует ImageMagick и позволяет указать алгоритм ее обрезки, например:

400x600^
400x600#
400x600>

Здесь описаны ^ # и >

https://github.com/thoughtbot/paperclip

...