从imageview更新javafx图像

ac1kyiln  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(468)

如何更新图片显示在imageview我设置这个图片从数据库的代码,以获得图片从数据库imageview是。。。

InputStream is = resultSet.getBinaryStream("image");
OutputStream os;

os = new FileOutputStream(new File("src/sources/images/photo.jpg"));
byte[]content = new byte[1024];
int size = 0;
while((size=is.read(content))!= -1)
{
   os.write(content,0,size);
}
os.close();
is.close();
image  = new Image("file:src/sources/images/photo.jpg");

imageView.setImage(image);

图像正在mysql数据库中以blob类型保存
现在我想更新这个图像,并再次设置这个图像如果我没有选择任何图像使用文件选择器请解决我的这个问题,谢谢提前
文件选择器代码

stage = (Stage) showScene.getScene().getWindow();

   file = fileChooser.showOpenDialog(stage);

   if(file != null){
               image = new Image(file.getAbsoluteFile().toURI().toString(),imageView.getFitWidth(),imageView.getFitHeight(),true,true);
       imageView.setImage(image);
       imageView.setPreserveRatio(true);
   }
  fis = new FileInputStream(file); // here i got error(null pointer exception) if i try to update withouting choosing image from filechooser

我将fis传递给preparedstatement进行更新,并插入

ulydmbyx

ulydmbyx1#

你得到了一个 NullPointerException 因为如果你没有用filechooser选择一个文件,你的 file 变量设置为空。这可以通过稍微修改if语句来解决。

file = fileChooser.showOpenDialog(stage);

if (file == null) {
    file = new File("path/to/default/file")
}

image = new Image(file.getAbsoluteFile().toURI().toString(),imageView.getFitWidth(),imageView.getFitHeight(),true,true);
imageView.setImage(image);
imageView.setPreserveRatio(true);

fis = new FileInputStream(file);

相关问题