2014-04-18 36 views
0

我的截圖模式有通過CarrierWave附加拍攝的圖像:爲什麼MiniMagick的裁剪方法返回一個空字符串?

class Screenshot < ActiveRecord::Base 
    attr_accessor :crop_x, :crop_y, :crop_w, :crop_h 
    mount_uploader :shot, ShotUploader 
    process_in_background :shot unless Rails.env.test? 
end 

我有收集裁剪信息爲@screenshot#process_crop行動的一種形式:

def process_crop 
    @survey = Survey.find(params[:survey_id]) 
    @review = @survey.review 
    @screenshot = @survey.screenshots.find(params[:id]) 
    @competitor = @survey.competitor 
    screenshot = MiniMagick::Image.open(@screenshot.shot.url) 
    if screenshot_params["crop_x"].present? 
     x = screenshot_params["crop_x"] 
     y = screenshot_params["crop_y"] 
     w = screenshot_params["crop_w"] 
     h = screenshot_params["crop_h"] 
     cropped_image = screenshot.crop("#{w}x#{h}+#{x}+#{y}") 
     uploader = ShotUploader.new 
     uploader.store!(cropped_image) 
    end 
    redirect_to survey_screenshot_path(@survey, @screenshot) 
    end 

我已經證實,X,Y等是明智的賦予圖像尺寸的值。

MiniMagick::Image.open(@screenshot.shot.url)像您期望的那樣返回一個MiniMagick圖像對象。

但爲什麼screenshot.crop("#{w}x#{h}+#{x}+#{y}")返回空字符串?

很明顯,我需要它以適合uploader.store!的格式返回裁剪後的圖像。

回答

0

Minimagick傾向於就地操作,所以

screenshot.crop("#{w}x#{h}+#{x}+#{y}") 

修改的截圖,而不是返回一個新的裁剪圖像

相關問題