2016-01-08 45 views
3

一直在研究,但未能找出問題所在:我正在使用JCrop,Carrierwave和Minimagick在裁剪圖像上跟蹤Railscasts PRO#182。當我來重新創建圖像版本時,系統提示錯誤:Rails 4 Carrierwave + Minimagick:無法使用MiniMagick進行操作,也許它不是圖像?原始錯誤:`mogrify -crop

CarrierWave::ProcessingError (Failed to manipulate with MiniMagick, maybe it is not an image? Original Error: mogrify -crop! 250x250+531+32 /tmp/mini_magick20160108-6544-1ec50pf.png failed with error: mogrify: unrecognized option -crop!' @ error/mogrify.c/MogrifyImageCommand/4197. ): app/uploaders/image_uploader.rb:48:in crop' app/models/course.rb:15:in crop_image' app/controllers/courses_controller.rb:12:in update'

有人能幫我理解這個錯誤是什麼意思嗎?

型號

class Course < ActiveRecord::Base 
    attr_accessor :crop_x, :crop_y, :crop_w, :crop_h 
    after_update :crop_image 

    mount_uploader :image, ImageUploader 

    def crop_image 
    image.recreate_versions! if crop_x.present? 
    end 
end 

控制器

class CoursesController < ApplicationController 

    def update 
    @course = Course.find(params[:id]) 
    if @course.update_attributes(course_params) 
     if course_params[:image].present? 
     render :crop 
     else 
     redirect_to @course, notice: 'Successfully updated' 
     end 
    end 
    end 

    def course_params 
    params.require(:course).permit(:title, :image, :crop_x, :crop_y, :crop_w, :crop_h) 
    end 
end 

ImageUploader

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 :crop 
    process :resize_to_fit => [250, 250] 
    end 

    def crop 
    if model.crop_x.present? 
     resize_to_fit(800, 350) 
     manipulate! do |img| 
     x = model.crop_x.to_i 
     y = model.crop_y.to_i 
     w = model.crop_w.to_i 
     h = model.crop_h.to_i 
     img.crop!("#{w}x#{h}+#{x}+#{y}") 
     end 
    end 
    end 
end 

回答

2

原來的選項-crop!在命令mogrify中不存在。決議只是改變.crop!到.crop

即在ImageUploader:

img.crop!("#{w}x#{h}+#{x}+#{y}") - >img.crop("#{w}x#{h}+#{x}+#{y}")

相關問題