我一直在研究,但没能找出问题所在:我正在使用JCrop,Carrierwave和Minimagick跟踪Railscasts #182裁剪图像。当我重新创建镜像版本时,系统提示错误:
CarrierWave::ProcessingError ( MiniMagick操作失败,可能不是镜像?原始错误:
mogrify -crop! 250x250+531+32 /tmp/mini_magick20160108-6544-1ec50pf.png
失败,错误为: mogrify:无法识别的选项-crop!' @ error/mogrify.c/MogrifyImageCommand/4197. ): app/uploaders/image_uploader.rb:48:in
crop‘crop_image' app/controllers/courses_controller.rb:12:in
/models/Course.rb:15:incrop_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
发布于 2016-01-23 01:39:31
结果是选项-crop!在mogrify命令中不存在。分辨率只是简单地改变了.crop!转到.crop
即在ImageUploader中:
img.crop!("#{w}x#{h}+#{x}+#{y}")
--> img.crop("#{w}x#{h}+#{x}+#{y}")
发布于 2019-05-24 03:27:42
strip
也有同样的问题。仅当图像较大时才会发生。这个问题的第一期是在2012年,在没有很好的解决方案的情况下关闭了。
https://stackoverflow.com/questions/34669235
复制相似问题