Rails 4:如何使用MiniMagick显示方形缩略图?

时间:2014-07-18 21:58:23

标签: ruby-on-rails ruby-on-rails-4 carrierwave rmagick minimagick

我希望使用MiniMagick显示正方形缩略图。

尽管图像显示,但图像不会以方形显示。

image_uploader.rb

class ImageUploader < CarrierWave::Uploader::Base
  .
  .
  .
  include CarrierWave::MiniMagick
  .
  .
  .
  storage :file
  .
  .
  .
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
  .
  .
  .
  version :thumb do
    process :resize_to_limit => [150, 150]
  end
  .
  .
  .
end

视图\ aritcles_article.html.erb

<li>
    <% article.photos.each do |photo| %>
      <%= image_tag(photo.image_url(:thumb).to_s) if photo.image? %>
   <% end %>
</li>

视图\ shared_article_form.html.erb

<%= form_for(@article) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>
  <div class="field">
    <%= f.text_area :content, placeholder: "Compose new article..." %>
    <%= f.fields_for :photos do |p| %>
      <%= p.hidden_field :article_id %>
      <%= p.label :image %>
      <%= p.file_field :image %>
      <% if p.object.image and p.object.image.file %>
    <%= image_tag p.object.image.url %>
        <p><%= p.object.image.file.filename %></p>
      <% end %>
    <% end %>
  </div>
  <%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>

模型\ photo.rb

class Photo < ActiveRecord::Base
    mount_uploader :image, ImageUploader
    validates :image, presence: true
end

消息&#34;表单包含1个错误。&#34; ,并且&#39; shared / error_messages&#39;中出现以下错误消息当我提交jpg文件时。

  
      
  • 照片图片无法使用MiniMagick操作,也许它不是图像?原始错误:mogrify.exe:无法打开图像255,': No such file or directory @ error/blob.c/OpenBlob/2643. mogrify.exe: no decode delegate for this image format 255,&#39; @ error / construct.c / ReadImage / 555。 mogrify.exe:无法打开图像255,': No such file or directory @ error/blob.c/OpenBlob/2643. mogrify.exe: no decode delegate for this image format 255,&#39; @ error / construct.c / ReadImage / 555。 mogrify.exe:无法打开图像0.0)': No such file or directory @ error/blob.c/OpenBlob/2643. mogrify.exe: unable to open module file C:\ Program Files(x86)\ ImageMagick-6.8.7-Q16 \ modules \ coders \ IM_MOD_RL_0)_。dll&#39;:没有这样的文件或目录@警告/module.c/GetMagickModulePath/682。 mogrify.exe:此图像格式没有解码委托`0.0)&#39; @ error / construct.c / ReadImage / 555。
  •   

1 个答案:

答案 0 :(得分:0)

我相信你是一个功能 - &gt; resize_and_pad

  version :thumb do
    process :resize_and_pad => [150, 150]
  end

注意:您可以为[150, 150, "#ffffff"]添加颜色,默认情况下它将是透明的。

除非您尝试执行cut thumbnail to fit之类的更多内容,resize_and_pad最适合您。