Я новичок здесь и немного новичок в Java.Я столкнулся с проблемой.У меня есть очень простая программа, которая пытается создать PNG и сохранить их в выбранной пользователем папке.byteimage является приватным байтом []:
byteimage = bcd.createPNG(300, 140, ColorSpace.TYPE_RGB, Color.BLACK, Color.BLACK);
setPath () вызывается внутри слушателя действия кнопки обзора
private void setPath() {
JFileChooser pathchooser = new JFileChooser();
pathchooser.setMultiSelectionEnabled(false);
pathchooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
pathchooser.setApproveButtonMnemonic(KeyEvent.VK_ENTER);
pathchooser.showDialog(this, "OK");
File f = pathchooser.getSelectedFile();
if (f != null) {
filepath = f.getAbsolutePath();
pathfield.setText(filepath);
}
}
Метод байтов в png выглядит следующим образом:
public void byteToPNG(String filename) {
try {
InputStream in = new ByteArrayInputStream(byteimage);
BufferedImage bufferedimg = ImageIO.read(in);
ImageIO.write(bufferedimg, "png", new File(filename));
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
Этот метод вызывается так:
byteToPNG(pathfield.getText() + System.getProperty("file.separator") + textfield.getText() + ".png");
textfield.getText () устанавливает фактическое имя png.Внутри конструктора задан путь к файлу по умолчанию:
filepath = System.getProperty("user.dir");
pathfield.setText(filepath);
Код отлично работает из Eclipse и создает png-изображение в нужном месте.К сожалению, после экспорта в jar он запускается, но при нажатии кнопки для генерации png ничего не происходит.Я думаю, что есть проблема в InputStream или BufferedImage, но я немного озадачен.