首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails 4 Carrierwave + Minimagick:用MiniMagick操作失败,可能不是图像?原始错误:` `mogrify -crop

Rails 4 Carrierwave + Minimagick:用MiniMagick操作失败,可能不是图像?原始错误:` `mogrify -crop
EN

Stack Overflow用户
提问于 2016-01-08 11:55:41
回答 2查看 1.7K关注 0票数 4

我一直在研究,但没能找出问题所在:我正在使用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:incrop‘crop_image' app/controllers/courses_controller.rb:12:in/models/Course.rb:15:in crop_image' app/controllers/courses_controller.rb:12:inupdate’

有人能帮我理解这个错误是什么意思吗?

模型

代码语言:javascript
复制
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

控制器

代码语言:javascript
复制
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

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 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}")

票数 2
EN

Stack Overflow用户

发布于 2019-05-24 03:27:42

strip也有同样的问题。仅当图像较大时才会发生。这个问题的第一期是在2012年,在没有很好的解决方案的情况下关闭了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34669235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档