AS3 y PHP... ¿guardar una captura de pantalla localmente y evitar los diálogos del sistema?

Después de dibujar un mapa de bits de un objeto de visualización, necesito guardar el mapa de bits, así como la entrada de texto, localmente y evitar los cuadros de diálogo del sistema que Flash Player mostraría mientras se guarda. ¿Se puede lograr esto con PHP? He leído que Air maneja esta tarea con bastante eficacia, pero no tengo experiencia con ambas plataformas. ¡Cualquier ayuda sería muy apreciada! Gracias...

preguntado el 03 de mayo de 12 a las 18:05

¿Debería también evitar el cuadro de diálogo de descarga? Creo que se necesita al menos una interacción del usuario para guardar algo localmente si está en un navegador. Solo por razones de seguridad. -

¿Necesita que se guarde para el usuario o sería suficiente un SharedObject local? -

El resultado final será una aplicación de proyector para Windows. Esta es esencialmente una bonita aplicación de fotomatón instalada en un museo que toma su foto, la coloca en un marco y la guarda localmente para examinarla en una fecha posterior. -

Es decir, tengo que evitar toda la interfaz del sistema a toda costa :) -

2 Respuestas

No, no puedes. Permitir que las aplicaciones web guarden datos en el sistema local sin permiso es un riesgo de seguridad ENORME (podría escribir una aplicación web de aspecto legítimo que guarde el software espía en su sistema). Flash no lo permite por este motivo.

Sin embargo, las aplicaciones de escritorio (AIR) pueden abrir un FileStream en la FileMode.WRITE modo y escribir datos en él sin ninguna indicación del usuario.

EDITAR Dado que está buscando una aplicación de escritorio, aquí hay algunos consejos:

var randomname:String=Math.floor(Math.random() * 1024).toString(16) + ".png"
var f:File=File.desktopDirectory.resolvePath("photos/" + randomname);
var s:FileStream=new FileStream();
s.open(f, FileMode.WRITE);
s.writeBytes(bytesArray); //bytesArray contains the binary data to write to the file
s.close();

contestado el 03 de mayo de 12 a las 19:05

Gracias... Es una aplicación basada en escritorio... ¡AIR lo es! - MaxG

@MaxG: La próxima vez, es posible que también desee incluir AIR en sus etiquetas. - Kumsal Óbuz

@kubarium: La próxima vez, puede publicar este comentario en la pregunta :) - Pranav Hosangadi

Gracias a todos... lo haré. ¡Esto me hace moverme en la dirección correcta! - MaxG

Consulta FileReference.save () para ese propósito.
Y sí, requiere la interacción del usuario (de lo contrario, sería una pesadilla).

Esta es su única opción si no está dispuesto a usar AIR y FileStream clase.
Las API de archivos de AIR no tienen esa limitación, pero requieren que ejecute una aplicación de escritorio.

Bueno, siempre puedes usar local SharedObject para almacenar algunos datos, pero obtendrá codificación AMF en este caso. Esto funcionará tanto con AIR como con aplicaciones web.

contestado el 03 de mayo de 12 a las 19:05

Gracias... Puede que tenga que ponerme complicado. Tengo que evitar los cuadros de diálogo del sistema a toda costa, ya que se trata de una instalación pública. No basado en navegador... - MaxG

Use las clases File y FileStream en la aplicación AIR, como mencioné anteriormente. Puede buscar fácilmente en Google algunos tutoriales sobre el uso de AIR para leer y guardar archivos locales. Tendrá lo que necesita: sin cuadros de diálogo y la capacidad de guardar archivos en casi cualquier lugar del sistema de archivos local (con solo algunas limitaciones). - miguel antipino

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.