Publicidad:
La Coctelera

Categoría: flash

Acabo de actualizar mis bundles de textmate para probar el nuevo invento del doctor naranja (paradme antes de que le pida en matrimonio), el build con MTASC. Por si no lo habíais tocado nunca, MTASC es un compilador de actionscript open source que funciona suuuperbien. Con este bundle la tarea se hace si cabe más sencilla, así que si teneis un mac y textmate os lo vais a pasar pepino con este juguetito.

Y se que viene mucho más (es lo que tiene la información privilegiada :D).

Esta misma semana hemos expulsado al mundo historiascepsa.com y bueno, la verdad es que está teniendo bastante aceptación. La mecánica del concurso es muy muy simple: eliges un soporte, subes una foto, compones el cartel eligiendo unos ingredientes, das tus datos y... tu imagen se integra en un anuncio de Cepsa y de paso participas en el concurso.

El año pasado fue distinto, se trataba de contar historias, y para que engañarnos, no todos tenemos alma de escritor. Pero ¿quién no tiene una foto a mano en el ordenador? Si el día que nos descuidemos les ponen cámara a las cajas de galletas.

En casi todos los casos, los procesos simples son resultados de muchas horas de pensar y desarrollar, y en este caso no ha sido una excepción. Al menos después de un proceso muy largo y muchísimo trabajo todo el equipo hemos quedado bastante satisfecho con el resultado.

En la parte que más me toca he conseguido que me dejasen realizar todo el proceso que lleva por detrás la mecánica de participación junto con la administración del micro en ruby on rails. Y ha sido todo un placer, desde la gestión de tamaños de imagen a los emails maquetados que se envían con cada acción.

En su momento me tocó investigar y darme cabezazos para solventar problemas muy concretos (no escribí de todos, gracias al cielo). Pero vamos, un par de fixes y lo agitamos todo con un poco de Rmagick y tenemos un concurso completito. Que fácil suena dicho así.

La verdad es que la manipulación de imágenes está genial. Cada vez que subes una foto el sistema le cambia el tamaño por algo más manejable dentro de flash sea cual sea el tamaño que subas (siempre cumpliendo unos mínimos), la transforma en escala de grises y le toca los niveles para quemarla un poquito, con el fin de que el resultado sea lo más aproximado posible a los displays que usa Cepsa, sea cual sea el origen de la imagen.

Una vez compones tu imagen en el flash, Rmagick nos deja la composición maquetadita para poder usar en los spots en internet, en la administración y... si ganas, para montar el spot de la tele :D (La mini de ahí arriba la ha montado el sistema).

Lo mejor de todo es que ha quedado todo muy visual, tanto a nivel de front como de back, y que una compañía con nombre y solidez dentro del panorama nacional como es Cepsa, nos haya dejado apostar por rails para manejar todo un proceso como este. ¡A ver si poco a poco esto de rails se va extendiendo!

Veamos, a mi esto me supuso una pequeña odisea, así que os escribo este post y así vais prevenidos para el día que os haga falta.

Estoy realizando un proyecto en rails + flash, y la subida de imágenes desde flash8 era un requerimiento, aunque una pequeña parte del proyecto.

El caso es que yo para empezar a familiarizarme con Filereference me leí este fantástico tutorial de Cristalab, donde se hace upload pero utilizando php por detrás. Yo estaba usando rails, entonces me iba a hacer falta adaptarlo.

Peeeeeero cada vez que trataba de subir una imagen me daba errores el cgi. Resulta que flash8, al hacer un upload envía cabeceras vacías o incorrectas, y podemos ver mensajitos en el log como

o bien

Dispatcher failed to catch: bad content body 
 Dispatcher failed to catch: no content body 

Finalmente dando un googleo me he encontrado este post en bubbleshare con el apropiado título de Dolores de cabeza del flash8 upload donde encontramos la solución al envío de cabeceras vacias o incorrectas de flash8 frente a rails. También lo he encontrado reflejado aquí.

Cuando ya estás haciendo toooodo esto te entra la cagalera cuando ves el "__corrupt_multipart_data"=>"true", algo así:

Processing HomeController#upload (for x.x.x.xat 2006-08-29 15:43:17) [POST]
   Session ID: 571a450fd1341dec9e6516015490ebe9
   Parameters: {"Filename"=>"imagen.png", "__corrupt_multipart_data"=>"true", "action"=>"upload", "controller"=>"home", "Filedata"=>#}

Pero nuestros problemas ya han pasado a la historia con el parchecito que hemos puesto. En este post de collcoll nos dejan el código que tienen para manejar el archivo una vez ha llegado, y funciona perfectamente. Os lo pongo aquí también. Este por ejemplo nos dejaría copiada la imagen con el mismo nombre dentro de la carpeta images/upload.

def upload
 
 	@content_name = @params['Filedata'].original_filename.gsub(/[^a-zA-Z0-9.]/, '_')
 		File.open("#{RAILS_ROOT}/public/images/upload/"+@content_name, "wb") do |f|
 			f.write(@params['Filedata'].read)
 		end
 	render(:nothing=>true)
 
 end

A partir de aquí cada uno que complique su código todo lo que le haga falta. Por ejemplo, yo una vez guardo los originales se los paso a RMagick para retocar, cortar, pegar, montar y muchos más ar.

No se si vale de mucho, pero he hecho un paquetito con el .fla que he usado para el test, parte del código del controlador, el flash fix. Aquí teneis.

Salud!