2012-05-04 20 views
8

Estoy usando mini_magick como la interfaz de utilizar ImageMagick para manipular alguna imagen. El redimensionamiento funciona bien. Pero cuando quiero recortar alguna imagen:No se puede recortar la imagen usando mini_magick

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

Se solicita constantemente No such file

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

Respuesta

30

Ah, yo estaba buscando con la frase clave equivocada supongo. La respuesta correcta viene a mí cuando busco minimagick en lugar de mini_magick. especialmente esta respuesta https://stackoverflow.com/a/9961434/179691

Lo que sí sé sobre mini_magick es solo un envoltorio de mogrify y así sucesivamente. La causa de mi problema es que -crop solo acepta la geometría con formato completo. así que cambié la expresión a:

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

y eso funciona.

+0

¡Funciona para jekyll-minimagick y retinamagick también! '' 'crop:" 640x480 + 0 + 0 "' '' – malcolm

1

Sólo en caso de si alguien está usando Carrierwave para recortar y subir la imagen directamente a Amazon S3, la forma correcta de hacer por mí es el siguiente:

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 

La razón por la que 'm añadiendo img = MiniMagick :: Image.open (URL) es porque si no especifico mi propia imagen, me tiraría el siguiente error:

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

Creo que es un poco de tempo predeterminado rary path que mini_magick trataría de encontrar la imagen, pero como la imagen se mantiene de forma remota en S3, no pudo encontrarla.

Cuestiones relacionadas