问题描述
我正在尝试使用 ImageProcessor / MiniMagick 在图像保存到我的 Rails 5.2 应用程序的数据库之前调整它们的大小。我能够保存图像,但是在保存之前没有调整该图像的大小,并且没有抛出错误。我也在使用 Trix 来处理和输出图像。
这是我目前设置的:
image_uploader.rb
require "image_processing/mini_magick"
class ImageUploader < Shrine
Attacher.derivatives do |original|
magick = ImageProcessing::MiniMagick.source(original)
{
resized: magick.resize_to_limit!(600,600)
}
end
end
shrine.rb(我在我的 shrine.rb 文件中包含了以下行)
Shrine.plugin :derivatives
photos_controller.rb(photos_controller.rb 文件中的相关代码)
def create
@photo = Photo.new(photo_params)
@photo.valid?
@photo.image_derivatives! if @photo.image_changed? # creates derivatives
respond_to do |format|
if @photo.save
format.html { redirect_to @photo,notice: 'Photo was successfully created.' }
format.json { render :show,status: :created,location: @photo }
else
format.html { render :new }
format.json { render json: @photo.errors,status: :unprocessable_entity }
end
end
end
2.6.1 :014 > photo.image_derivatives
=> {:resized=>#<ImageUploader::UploadedFile storage=:store id="b234085e9502c39f23edb84bced89ee0.png" Metadata={"filename"=>"image_processing20210103-23514-zyeyzg.png","size"=>94105,"mime_type"=>"image/png"}>}
2.6.1 :015 > photo.image(:resized)
=> #<ImageUploader::UploadedFile storage=:store id="b234085e9502c39f23edb84bced89ee0.png" Metadata={"filename"=>"image_processing20210103-23514-zyeyzg.png","mime_type"=>"image/png"}>
2.6.1 :017 > photo.image(:resized).size
=> 94105
2.6.1 :018 > photo.image(:resized).mime_type
=> "image/png"
当我拉出保存的记录时,我可以找到让我认为它有效的信息,但是当我在视图中查看它时没有调整大小。有什么想法吗? ...让我知道是否应该提供更多信息。
解决方法
虽然这不是我一直在寻找的答案,但处理这个问题的一种方法是通过 css。我将以下内容添加到我的 css 文件中,效果很好。文件在后端的保存方式没有任何变化,但浏览器中的外观正是我想要的:
.trix-content {
img {
max-width: 400px;
}
}