Ваш код, кажется, объединяет несколько идей, но, кажется, ничего не достигает
Этот ...
ImageIcon ImageIcon = (ImageIcon)lblPhoto.getIcon();
и это ...
byte[] b = new byte[size];
out.write(b);
и это ...
ImageIO.write((RenderedImage)Image, "jpg", out);
Все выглядят как плохие идеи. Вы не должны слепо приводить объекты, и я не знаю, почему вы используете FileOutputStream
для записи пустого массива байтов (длиной 0 байт) в файл.
Более "упрощенным" подходом было бы нарисовать Icon
(который у вас есть / вы знаете) в BufferedImage
(который поддерживает RenderedImage
), а затем записать это через ImageIO
в File
что-то вроде ...
Icon icon = lblPhoto.getIcon();
BufferedImage bi = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = bi.createGraphics();
icon.paintIcon(lblPhoto, g2d, 0, 0);
g2d.dispose();
File file = new File("\\RekamMedis\\Photo\\"+txtNama.getText().trim()+".jpg");
ImageIO.write(bi, "jpg", file);
Я бы также добавил проверку, чтобы увидеть, является ли icon
null
или нет, просто потому, что они могут не иметь назначенную фотографию