Носители 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
Другие вопросы по тегам