【发布时间】:2019-03-01 12:33:36
【问题描述】:
我需要将图像 .png 上传到服务器并将其显示给 Swing GUI,我正在使用 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;
}
从 byte[] 到 java swing:
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) 一定有问题。
【问题讨论】:
-
所以做一些故障排除 - 不是所有的煎饼 - 它在缩放之前显示吗?开箱时会显示吗??做一些工作不要只是问问题