jueves, 12 de noviembre de 2009

Generando un avatar

Inventemos una palabra en castellano para traducir avatar. Podemos castellanizarla directamente, avatario o ávatar, porque parece que no podemos traducirla y, algo como, imagencilla, imagen de usuario o imagen en twitter, no me convence del todo.

Y dicha la tontería, vamos a lío. Supongamos que tenemos una imagen cuya ruta es C:/Users/danimata/full_body.jpg. Vamos a recortar un trozo de la imagen cuyo vértice superior izquierdo es (x1, y1) e inferior derecho (x2, y2). Además, para que el recorte nos quede bien en nuestra página de perfil de usuario, lo vamos a escalar para que tenga altura h y anchura w. Finalmente, lo guardaremos como C:/Users/danimata/avatar.jpg

Si utilizamos RMagick haremos lo siguiente:

require 'RMagick'

img = Magick::Image.read("C:/Users/danimata/full_body.jpg").first
tmp_avatar = img.crop(x1, y1, (x2 - x1 + 1), (y2 - y1 + 1))
avatar = tmp_avatar.resize(w, h)
temp = Tempfile.new("C:/Users/danimata/avatar.jpg") avatar.write "png:" + temp.path

Sin embargo, si utilizamos image_science haremos lo siguiente:

require 'image_science'

temp = Tempfile.new("C:/Users/danimata/avatar.jpg")
ImageScience.with_image "C:/Users/danimata/full_body.jpg" do |image|
  image.with_crop x1, y1, x2, y2 do |cropped|
    cropped.resize w, h do |avatar|
      avatar.save temp.path
    end
  end
end

Y listo. Como siempre, salud y rocanrol!

La noche se está cayendo
y con ella cae el tiempo.
El día no sirvió de nada,
tarde de nubes sin agua.
Hoy el cielo es de cemento,
parece que dios está muerto.
Golpean la puerta de casa,
mensajeros de desgracia...
¡malas noticias!