2012-05-04 14 views
8

Sto usando mini_magick come interfaccia di utilizzo di ImageMagick per manipolare alcune immagini. Il ridimensionamento funziona bene. Ma quando voglio ritagliare qualche immagine:Impossibile ritagliare l'immagine usando mini_magick

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

Si richiede costantemente No such file

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

risposta

30

Ah, ero alla ricerca di sbagliato frase-chiave immagino. La risposta giusta viene da me quando cerco minimagick anziché mini_magick. specialmente questa risposta https://stackoverflow.com/a/9961434/179691

Sapevo che la roba su mini_magick è solo un pacchetto di mogrify e così via. La causa del mio problema è che -crop accetta solo la geometria con formattazione completa. così ho cambiato l'espressione di:

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

e che funziona.

+0

Funziona anche per jekyll-minimagick e retinamagick! '' 'ritaglio:" 640x480 + 0 + 0 "' '' – malcolm

1

Solo nel caso se qualcuno sta usando Carrierwave per ritagliare e caricare un'immagine direttamente ad Amazon S3, il modo corretto di fare per me è il seguente:

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 

Il motivo per cui 'm aggiungendo img = MiniMagick :: Image.open (url) è perché se non specificare la mia immagine, mi getterebbe il seguente errore:

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

Penso che sia un po' di tempo predefinito percorso rary che mini_magick proverebbe a trovare l'immagine, ma poiché l'immagine è tenuta in remoto in S3, non è stata in grado di trovarla.

Problemi correlati