gpt4 book ai didi

ruby-on-rails - 如何使用 Rails、Carrierwave 和 Minimagick 在上传时裁剪图像?

转载 作者:行者123 更新时间:2023-12-04 14:31:28 30 4
gpt4 key购买 nike

我读过了:

  • Undefined Method crop! Using Carrierwave with MiniMagick on rails 3.1.3
  • Carrierwave Cropping
  • http://pastebin.com/ue4mVbC8

  • 所以我试过:
    # encoding: utf-8

    class ProjectPictureUploader < 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 :cropper
    # process :crop
    process resize_to_fit: [200, 200]
    end

    def cropper
    manipulate! do |img|
    # if model.crop_x.present?
    image = MiniMagick::Image.open(current_path)
    crop_w = (image[:width] * 0.8).to_i
    crop_y = (image[:height] * 0.8).to_i
    crop_x = (image[:width] * 0.1).to_i
    crop_y = (image[:height] * 0.1).to_i
    # end
    img = img.crop "#{crop_x}x#{crop_y}+#{crop_w}+#{crop_h}"
    img
    end
    end

    def crop
    if model.crop_x.present?
    resize_to_limit(700, 700)

    manipulate! do |img|
    x = model.crop_x
    y = model.crop_y
    w = model.crop_w
    h = model.crop_h

    w << 'x' << h << '+' << x << '+' << y

    img.crop(w)
    img
    end
    end
    end

    end

    然后我用了 收割机 :/uploads/tmp/20121006-2227-4220-9621/thumb_Koala.jpg 的未定义局部变量或方法`crop_h':#

    然后 裁剪 : 未定义的方法 `crop_x' #

    模型:
    class Project < ActiveRecord::Base
    ...
    mount_uploader :picture, ProjectPictureUploader
    end

    Rails 3.2、Win7、

    转换版本
    版本:ImageMagick 6.7.9-4 2012-09-08 Q16 http://www.imagemagick.org
    版权所有: 版权所有 (C) 1999-2012 ImageMagick Studio LLC
    特点:OpenMP

    最佳答案

    我已经明白了。

      version :thumb do    
    process resize_to_fit: [300, nil]
    process crop: '300x150+0+0'
    #process resize_and_crop: 200
    end

    private

    # Simplest way
    def crop(geometry)
    manipulate! do |img|
    img.crop(geometry)
    img
    end
    end

    # Resize and crop square from Center
    def resize_and_crop(size)
    manipulate! do |image|
    if image[:width] < image[:height]
    remove = ((image[:height] - image[:width])/2).round
    image.shave("0x#{remove}")
    elsif image[:width] > image[:height]
    remove = ((image[:width] - image[:height])/2).round
    image.shave("#{remove}x0")
    end
    image.resize("#{size}x#{size}")
    image
    end
    end

    从这里调整大小和裁剪:

    http://blog.aclarke.eu/crop-and-resize-an-image-using-minimagick/

    关于ruby-on-rails - 如何使用 Rails、Carrierwave 和 Minimagick 在上传时裁剪图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12762728/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com