2012-05-04 14 views
8

Używam mini_magick jako interfejsu wykorzystywania ImageMagick do manipulowania obrazem. Zmiana rozmiaru działa dobrze. Ale gdy chcę trochę przyciąć obraz:Nie można przyciąć obrazu przy użyciu mini_magick

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

Stale prosi No such file

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

Odpowiedz

30

Ach, szukałem z niewłaściwego klucza frazy chyba. Właściwa odpowiedź przychodzi do mnie, gdy szukam minimagick zamiast mini_magick. szczególnie ta odpowiedź: https://stackoverflow.com/a/9961434/179691

Wiem, że rzeczy o mini_magick to tylko opakowanie mogrify i tak. Przyczyną mojego problemu jest to, że -crop akceptuje tylko sformatowaną geometrię. więc zmieniłem wyrażenie na:

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

i to działa.

+0

Pracuje również dla mini-jekylli i retinamagicków! '' 'crop:" 640x480 + 0 + 0 "' '' – malcolm

1

Tylko w przypadku, jeśli ktoś używa Carrierwave przyciąć i przesyłanie obrazu bezpośrednio do Amazon S3, prawidłowy sposób zrobić dla mnie jest następująca:

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 

Powodem I jestem dodanie img = MiniMagick :: Image.open (URL) jeśli bowiem nie określił mój własny obraz, by to rzucić mi następujący błąd:

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

myślę, że niektóre domyślne tempo Ścieżka rary, którą mini_magick spróbuje znaleźć obraz, ale ponieważ obraz jest trzymany zdalnie w S3, nie może go znaleźć.

Powiązane problemy