Апплет не создает файл изображения через Imagio.write
-
09-10-2019 - |
Вопрос
Я борюсь с проблемой, связанной с эскизом обработки, который я хочу использовать для создания файла изображения (в каталог на стороне сервера). В Java я использую пробежку холста, преобразованного в буферризаж, который затем создан в виде файла через Imagio.Write.
Он успешно создает файл при запуске как эскиз в моей системе, file.png появляется в той же папке, что и программа. Проблема в том, что когда программа экспортируется как апплет, он больше не создает файл. Было бы огромно, если у кого-нибудь есть какой-либо вклад относительно того, почему эскиз программы может создать изображение, но апплет не может.
Вот пара фрагментов того, что я использую, если это какая-либо помощь. Спасибо всем.
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); }
И вот метод, который преобразует опору для буферизации.
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;
}
Решение
Я думаю, что это просто ограничения безопасности апплета, препятствующие вам модификации файловой системы на клиентском компьютере.
Взгляни на FilesAveservice в JNLP. Это можно использовать из неподписанного апплета, чтобы сохранить файл на файловую систему на клиентском компьютере.
Если вы пытаетесь написать в каталог на сервер От апплета вы не можете сделать это напрямую. Вам нужно будет создать форму загрузки на сервере и, возможно, использовать HttpURLConnection
отправить запрос на почту на сервер.