Я использую Carrierwave и RMagick для загрузки изображений в мое приложение Rails. У меня есть image_uploader
вроде:Как установить прозрачный фон с несущей, методом resize_and_pad и jpg?
class ImageUploader < CarrierWave::Uploader::Base
# ... Other stuff ...
process :convert => 'png'
def filename
super.chomp(File.extname(super)) + '.png'
end
# ...
version :resized_image do
process :resize_and_pad => [X, Y]
end
# ...
end
Моей проблемы заключается в том, что, когда я загрузить изображение PNG, метод resize_and_pad
добавляет прозрачный фон, чтобы соответствовать размерам, указанным. Но когда я загружаю jpg-образ, он преобразуется в png, но фон белый и не прозрачный, возможно, потому что изображение преобразуется в png после изменения размера, а не раньше.
Итак, есть ли решение этой проблемы? Есть ли какой-либо возможный способ гарантировать, что метод convert
вызывается перед resize_and_pad
, чтобы добавить прозрачный фон к размерному изображению?
EDIT
Я положил пример, чтобы сделать мою проблему понятнее:
в загруженном JPG нормальное изображение, например 300px × 300px. Мой resize_and_pad
метод накладывает изображение на 300px × 400px. Те 100px, которые я хочу заполнить, должны быть прозрачными, но из-за того, что JPG не может иметь прозрачный фон, я пытаюсь преобразовать в PNG перед применением resize_and_pad
. Моя проблема заключается в том, что конечным результатом является изображение с белым фоном вместо прозрачного фона.
см. Http://stackoverflow.com/questions/19625066/carrierwave-rmagick-not-removing-transparency-in-convert-to-jpg –