2012-05-04 36 views
8

Tôi đang sử dụng mini_magick làm giao diện sử dụng ImageMagick để thao tác một số hình ảnh. Thay đổi kích thước hoạt động tốt. Nhưng khi tôi muốn cắt một số hình ảnh:Không thể cắt hình ảnh bằng mini_magick

img = MiniMagick::Image.open(url) 
img.crop('200x800!') 

Nó liên tục nhắc nhở No such file

No such file or directory - /var/folders/c4/mqlwdx_d3kj6hqcnvbjr9mn80000gn/T/mini_magick20120504-11111-16kayc1.png 

Trả lời

30

Ah, tôi đã tìm kiếm với cụm từ then chốt sai tôi đoán. Câu trả lời đúng đến với tôi khi tôi tìm kiếm minimagick thay vì mini_magick. đặc biệt là câu trả lời này https://stackoverflow.com/a/9961434/179691

Tôi đã biết nội dung về mini_magick chỉ là một gói mogrify và như vậy. Nguyên nhân của sự cố của tôi là -crop chỉ chấp nhận hình dạng được định dạng đầy đủ. vì vậy tôi đã thay đổi biểu thức thành:

img.crop('200x800+0+0') 

và hoạt động.

+0

Làm việc cho jekyll-minimagick và retinamagick quá! '' 'crop:" 640x480 + 0 + 0 "' '' – malcolm

1

Chỉ trong trường hợp nếu có ai đang sử dụng Carrierwave để cắt và tải hình ảnh trực tiếp đến Amazon S3, cách chính xác để làm đối với tôi là như sau:

image_uploader.rb

url=model.remote_image_url 
crop_params="#{w}x#{h}+#{x}+#{y}" 
manipulate! do |img| 
    img = MiniMagick::Image.open(url) 
    img.crop(crop_params) 
    img = yield(img) if block_given? 
    img 
end 

Lý do tôi 'm thêm img = MiniMagick :: Image.open (url) là bởi vì nếu tôi không chỉ định hình ảnh của riêng tôi, nó sẽ ném cho tôi những lỗi sau:

mogrify.im6: geometry does not contain image `/tmp/mini_magick20150811-15523-ac8go1.jpeg' 

tôi nghĩ đây là một số tiến độ mặc định đường dẫn rary rằng mini_magick sẽ cố gắng tìm hình ảnh, nhưng vì hình ảnh được giữ từ xa trong S3, nó không thể tìm thấy nó.

Các vấn đề liên quan