Swing 实现文件选择器的显示,及图片(blob类型)在数据库的输入,输出问题

通过文件选择器,选择图片文件并把图片文件 存入 数据库的 blob类型字段中
   及直接从数据库中读取图片文件(Blob --> 图片)

    步骤:
      1、创建文件选择器,获取选择的图片文件
         //声明文件,表示要存入数组的图片文件,做为全局变量
              File file = null;  
          
           //此代码表示双击一个组件时,弹出文件选择器,写在组件的MouseClicked事件代码中
              if (evt.getClickCount() ==2)
            {
                   //创建文件选择器
JFileChooser jFileChooser = newJFileChooser(); 
                    //设置文件后缀的过滤器
FileFilter fileFilter = new FileNameExtensionFilter(
                              "jpg,png,gif图片", "gif", "png","jpg");
               //把过滤器添加到文件选择器中
jFileChooser.setFileFilter(fileFilter);
                  //表示选择了一个文件打开
if (jFileChooser.APPROVE_OPTION == jFileChooser .showOpenDialog(this))                        {
    //获取选择的文件
    file =jFileChooser.getSelectedFile();
                   //把文件存入写入流,缓存
    FileInputStreaminputStream = new FileInputStream(file);                    
                    //定义字节数组,同于存放二进制文件,长度为写入流的长度
    byte[] b = newbyte[inputStream.available()];
                    //把字节数组写入流
    inputStream.read(b);
    //获取文件 --> 图片文件
    ImageIcon icon = newImageIcon(b);
    //把文件放在lbl组件上显示
    lblPhoto.setIcon(icon);
}
      }
         
       2、把图片存入数据库中

          //获取图片文件,写入输入流
           FileInputStream inputStream = newFileInputStream(file);
           //转化字节数组
           Byte []imageData = new byte[inputStream.available()];
           //读入输入流中
           inputStream.read(imageData);
           //byte数组 -->blob类型
           Blobphoto = new SerialBlob(imageData);
           //存入数据库
          contact.setPhoto(photo);  //contact为数据库中记录,用java代码表示的对象

       3、把数据库中的Blob文件--> 图片文件显示

          //从数据库中获取Blob文件
            Blobphoto = contact.getPhoto();
           //Blob -->字节数组
           Byte[]data = photo.getBytes(1,photo.getBinaryStream().available());
           //字节数组 -->图片类型
           IconimageIcon = new ImageIcon(data);
           //把图片存入组件中显示
           lblPhoto.setIcon(imageIcon);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值