[Ror-es] problema con manejo de imagenes

javier ramirez jramirez at aspgems.com
Tue Oct 3 22:05:03 GMT 2006


Hola,

En primer lugar veo algo  obvio, que es probablemente un error de 
cut&paste, es que el parámetro en redimensiona lo has llamado "image" 
pero dentro del método lo usas como "imageN"

por otro lado, no me parece a priori que suceda como dices que te pierde 
el contenido del fichero, ya que la primera parte del método se ejecuta 
y no te da un error hasta intentar acceder a img[0].columns. Es decir, 
que el Image.ping te está devolviendo un nil. Hasta donde sé, Image.ping 
trabaja o con un path o con un fichero abierto. No sé si el formato en 
el que recoges la imagen se puede tratar directamente como fichero. En 
caso de que lo que tengas en memoria sea un blob, puede que te sea útil 
el método Image.from_blob o Image.read_inline si está en base64

en cualquier caso, con RMagick cambiar las dimensiones de una imagen es 
más simple que lo que has puesto (a no ser que haya más código que no 
has enviado y que estés haciendo más cosas)

img=ImageList.read (path)
img.resize!(nuevasdimensiones o factor de conversion)
img.write(path)

como bola extra, si en el path de destino le cambias la extension (o si 
le pones un prefijo que indique la extensión) te lo convierte al formato 
deseado.

suerte,

j

Sickman Warez wrote:
> Saludos amigos, he creado una clase, para redimensionar una imagen de 
> acuerdo a un criterio(ancho y alto), al metodo de esta clase le paso el 
> valor proveniente de un campo file del formulario, el codigo es algo asi:
>
> #modelo
> #aqui estoy recogiendo el contenido del campo file y pasandolo al metodo de 
> la clase
> def img_reducida=(imagen)
> Herramientas.redimensiona(80,100,imagen,"public/images/productos/reducidas/")
> end
>
> #my clase
> #aca proceso el archivo, extraigo su ancho y alto, etc
> #pero el problema aparentemente es porque el contenido del file se pierde y 
> llega como nil hasta aqui.
> class Herramientas
> include Reloadable
> require 'RMagick'
> def self.redimensiona(max_ancho,max_alto,image,destino)
>   File.open("public/images/tmpro#{imagen.original_filename}", "wb") { |f| 
> f.write(imagen.read) }
>   img=Magick::Image.ping(imagen)
>   @ruta=imagen
>   ancho=img[0].columns
>   alto=img[0].rows
>   .....
> end
>
> end
>
>
> #y entonces me lanza este error
> You have a nil object when you didn't expect it!
> The error occured while evaluating nil.columns
>
> No entiendo porque el contenido del file se pierde, tal vez sea por lo que 
> es temporal, al menos asi era en php, como podria pasar el contenido de esta 
> archivo al metodo de la clase?, ojala me orienten puedan ya que llevo con 
> esto mas de un dia :(.
>
> Gracias.
>
> _________________________________________________________________
> Grandes éxitos, superhéroes, imitaciones, cine y TV... 
> http://es.msn.kiwee.com/ Lo mejor para tu móvil.
>
> _______________________________________________
> Ror-es mailing list
> Ror-es at lists.simplelogica.net
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>   



More information about the Ror-es mailing list