Pregunta

He estado luchando con un problema que involucra un boceto de procesamiento que quiero utilizar para crear un archivo de imagen (en un directorio del servidor). En Java, utilizo un PImage del lienzo, convertida en un BufferedImage, que se crea a continuación, como un archivo a través de ImageIO.write.

Crea el archivo correctamente cuando se ejecuta como un boceto en mi sistema, file.png aparece en la misma carpeta que el programa. El problema es que cuando el programa se exporta como un applet, ya no crea el archivo. Sería enorme si alguien tenía alguna entrada de por qué el boceto del programa puede crear la imagen, pero el applet no puede.

Aquí hay un par de fragmentos de lo que estoy usando si es de ninguna ayuda. Gracias a todos.

PImage pimg = get();
BufferedImage canvas = convertToBufferedImage(pimg);
File file = new File("./sketch/file.png");
try
{
  ImageIO.write(canvas, "PNG", file);
}
catch (Exception e) { println(e); }

Y aquí está el método que está convirtiendo el PImage a un BufferedImage.

BufferedImage convertToBufferedImage(PImage pimg){
    PGraphics pg = createGraphics(width, height, JAVA2D);
    pg.image(pimg, 0, 0);
    BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB_PRE);
    Graphics2D g2d = img.createGraphics();
    g2d.drawImage((java.awt.Image)pg.image, 0, 0, width, height, this);
    g2d.finalize();
    g2d.dispose();
    return img;
}
¿Fue útil?

Solución

Creo que es justo restricciones de seguridad del applet que le impide modificar el sistema de archivos en la máquina cliente.

Tome un vistazo a FileSaveService en JNLP. Esto puede ser usado desde un applet firmado a guardar un archivo en el sistema de archivos en la máquina cliente.

Si está intentando escribir en un directorio en el servidor de un applet, no se puede hacer esto directamente. Lo que se necesita para crear un formulario de carga en el servidor y tal vez usar HttpURLConnection para enviar una solicitud POST al servidor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top