Мне нужно загрузить изображение .png на сервер и показать его в графическом интерфейсе Swing, я использую JFileChooser, пользователь выбирает изображение .png, и оно сохраняется в байте [].Позже, когда я пытаюсь отобразить изображение, оно все черное.Это не происходит с файлами .jpg.У меня проблема с прозрачностью изображений .png.Это мой код:
Сохранение изображения в байт []:
public byte[] AvatarToByte(String url){
byte[] data = null;
String extension = "";
try{
BufferedImage bImage = ImageIO.read(new File(url));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
if(url.toString().toLowerCase().contains(".png")){
extension = "png";
}else{
extension = "jpg";
}
ImageIO.write(bImage, extension, bos );
data = bos.toByteArray();
}catch(Exception e){
e.printStackTrace();
}
return data;
}
От байта [] до свинга Java:
public ByteToAvatar(byte[] data){
BufferedImage img = null;
img = ImageIO.read(new ByteArrayInputStream(data));
JLabel lblURL = new JLabel();
lblURL.setBorder(new LineBorder(Color.GRAY));
lblURL.setBackground(SystemColor.controlLtHighlight);
lblURL.setBounds(10, 10, 80, 80);
lblURL.setIcon(Resize(img));
}
Размер:
private ImageIcon Resize(Image img){
Image newImg = img.getScaledInstance(80, 80, Image.SCALE_SMOOTH);
ImageIcon image = new ImageIcon(newImg);
return image;
}
edit: попытался отобразить изображение перед изменением размера, и оно отображается правильно.В Resize (Image img) должно быть что-то не так.