Носители PNG из WernerWave от загрузки SVG
Использование рубина на рельсах. Я хочу, чтобы операторская загрузка SVG-файла делала миниатюры.png.
У меня проблемы с синтаксисом получения carrierwave для преобразования файлов в png.
Это близко, и содержимое миниатюры являются данными PNG, но расширение имени файла.svg
class SvgUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
version :thumb do
process :convert => 'png'
process resize_to_fit: [50, 50]
end
version :thumb_small do
process :convert => 'png'
process resize_to_fit: [15, 15]
end
1 ответ
Решение
После долгих исследований есть способ изменить суффикс файла. Сложная часть заключается в том, чтобы заставить несущую изменить только суффикс миниатюр. Если вы не будете осторожны, он изменит суффиксы всех файлов, включая исходный файл загрузки.
Вот что сработало
class SvgUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
version :thumb do
def full_filename(for_file)
super(for_file).chomp(File.extname(super(for_file))) + '.png'
end
process :convert => 'png'
process resize_to_fit: [50, 50]
end
version :thumb_small do
def full_filename(for_file)
super(for_file).chomp(File.extname(super(for_file))) + '.png'
end
process :convert => 'png'
process resize_to_fit: [15, 15]
end