Мне нужно изменить размер / обрезать изображения в разных разрешениях для приложения 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