【问题标题】:Carrierwave #Resize_to_fill not working with Minimagick (only works with rMagick)Carrierwave #Resize_to_fill 不适用于 Minimagick(仅适用于 rMagick)
【发布时间】:2017-06-30 07:18:32
【问题描述】:

我将我的 rails 应用程序配置为使用 Carrierwave 进行图像上传。根据文档,我为多个文件上传包含了适当的 gem 版本。在 Carrierwave 上传器中,我包含了 Minimagick。当我尝试使用 #resize_to_fill 方法时,出现以下错误,并且上传失败:

ActiveRecord::RecordInvalid: Validation failed: Images translation missing: en.errors.messages.mini_magick_processing_error

但是,当我从 Minimagick 切换到 Rmagick 时,它可以完美运行吗?如果可能的话,我更喜欢使用 Minimagick。另一个奇怪的事情是其他方法,如 #resize_to_fit 与 Minimagick 和 Rmagick 完美配合。有人遇到过这个问题吗???

以下是重要文件:

宝石文件

gem 'rails',                   '5.0.1'
gem 'bcrypt',                  '3.1.11'
gem 'faker',                   '1.6.6'
gem 'carrierwave',              github: 'carrierwaveuploader/carrierwave'
gem 'mini_magick',             '4.5.1'
# gem 'rmagick',              '~> 2.15', '>= 2.15.4'
gem 'fog',                     '1.38.0'
gem 'will_paginate',           '3.1.0'
gem 'bootstrap-will_paginate', '0.0.10'
gem 'bootstrap',            '~> 4.0.0.alpha6'

source 'https://rails-assets.org' do
  gem 'rails-assets-tether', '>= 1.3.3'
end

gem 'puma',                    '3.4.0'
gem 'pg',   '0.18.4'
gem 'sass-rails',              '5.0.6'
gem 'uglifier',                '3.0.0'
gem 'coffee-rails',            '4.2.1'
gem 'jquery-rails',            '4.1.1'
gem 'turbolinks',              '5.0.1'
gem 'jbuilder',                '2.4.1'

group :development, :test do
  gem 'byebug',  '9.0.0', platform: :mri
end

group :development do
  gem 'web-console',           '3.1.1'
  gem 'listen',                '3.0.8'
  gem 'spring',                '1.7.2'
  gem 'spring-watcher-listen', '2.0.0'
end

group :test do
  gem 'rails-controller-testing', '0.1.1'
  gem 'minitest-reporters',       '1.1.9'
  gem 'guard',                    '2.13.0'
  gem 'guard-minitest',           '2.4.4'
end

上传者/images_uploader.rb

class ImagesUploader < CarrierWave::Uploader::Base
  # Include RMagick or MiniMagick support:

  # include CarrierWave::RMagick (only this one works)
  include CarrierWave::MiniMagick

  process resize_to_fill: [900, 600]

  if Rails.env.production?
    storage :fog
  else
    storage :file
  end

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  def extension_white_list
    %w(jpg jpeg gif png)
  end
end

根据文档以及我在网上看到的许多示例,Minimagick 和 Rmagick 都应该支持 #resize_to_fill。我还尝试使用不同版本的 Carrierwave 和 Minimagick,但没有任何效果。我还尝试重新安装 Imagemagick。还是什么都没有。

有人可以帮忙吗!另外,如果我不能让 Minimagick 工作,那么 Rmagick 真的那么不好用吗?从我所看到的情况来看,人们真的反对它。谢谢!

【问题讨论】:

    标签: ruby-on-rails carrierwave image-resizing rmagick minimagick


    【解决方案1】:

    也许为时已晚。 但我已经面临这个问题。 要解决它,您应该:

    1. 确保在使用前已安装 ImageMagick Mini_magick
    2. 重启你的机器。

    然后就成功了。

    【讨论】:

      【解决方案2】:

      如果您通过远程 url 添加图像,还可以验证您使用的是图像的直接链接,例如,来自云应用程序的缩短 URL 可能不起作用。

      【讨论】:

      • 这更适合作为评论,你的答案不是实际答案
      猜你喜欢
      • 2018-05-19
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      相关资源
      最近更新 更多