Carrierwave、MiniMagick 和调整图像大小
Posted
技术标签:
【中文标题】Carrierwave、MiniMagick 和调整图像大小【英文标题】:Carrierwave, MiniMagick and resizing images 【发布时间】:2019-01-24 19:28:25 【问题描述】:我正在尝试为网站制作一个简单的 rss/博客提要。我想要一个简单的封面照片上传器,它将出现在标题左侧的提要中,并带有博客文章的阅读更多链接。我认为在图像上传器文件中,如果您包含 mini_magick,您可以访问诸如 version :medium do 等方法,用于不同版本的图像上传。无论出于何种原因,在我提交表单后它只会在浏览器中引发错误,而且根本没有帮助。当我删除上传器文件中的版本 :medium do 方法时,图像像正常一样上传,但很小,我真的想调整它的大小。
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :fog
version :medium do
process resize_to_fit: [250, 250]
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
class HomeBlog < ApplicationRecord
has_many :upvotes
mount_uploader :image, ImageUploader
end
<%= tinymce_assets %>
<%= simple_form_for(@admin_home_blog) do |f| %>
<%= f.error_notification %>
<%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
<div>
<h3>Upload a Cover Photo</h3>
<%= f.file_field :image %>
<%= f.hidden_field :image_cache %>
</div>
<div class="form-inputs">
<span class="form_labels"><%= f.input :name %></span>
<%= f.text_area :entry, :class => "tinymce", :rows => 20, :cols => 120 %>
</div>
<div class="form-actions">
<%= f.button :submit, "Create Blog Post" %>
</div>
<% end %>
<%= tinymce %>
谁能看出有什么问题?我还在 gemfile 中安装了带有载波和雾的 gem 'mini_magick'。
【问题讨论】:
查看this CarrierWave 文档的一部分。这就是我在评论调用特定尺寸时的意思! :) 【参考方案1】:我的声誉还不够高,无法简单地发表评论,但试试这个。
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :fog
# move this line outside of your method
process resize_to_fit: [512,512]
version :medium do
# change the word 'fit' to 'fill'
process resize_to_fill: [250,250]
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
根据我所看到的以及我所取得的成功,只需将大小调整为 FIT 一次(在每种照片尺寸方法之前),然后将大小调整为 FILL 以适应所有不同的照片尺寸。祝你好运!
【讨论】:
酷!我很快就会试一试。我会让你知道会发生什么。感谢您花时间回答。干杯! 是的,它仍然没有调整大小。至少它上传了封面照片....不知道为什么这么难。我非常沮丧 有一些方法可以访问特定的大小。我相信它类似于 objectname.medium.url 是你如何调用照片(在 中)我会尽快回复你 是的,你是对的。我这样称呼它: 图片稍大,但绝对不是我在上传器中的中版方法中设置的尺寸【参考方案2】:如果您在使用carrierwave 或回形针时遇到困难并且无法让Mini_Magick 工作,并且只想像我一样调整为更大的图像?简单的内嵌样式就足够了。不要在上传文件中的版本废话上浪费太多时间。也许有些人没有问题,或者他们已经破解了密码。我想我很特别,哈哈。
【讨论】:
以上是关于Carrierwave、MiniMagick 和调整图像大小的主要内容,如果未能解决你的问题,请参考以下文章
Carrierwave、MiniMagick 和调整图像大小