• sqlserver数据库存储图片


     1 /**
     2      * 存储图片方法测试
     3      */
     4     public static void pictureStoreSqlserver(){
     5         try {
     6             
     7             FileInputStream fis = null;
     8             File file = new File("C:/Users/v-guoxiao/Desktop/ReferencePicture/image1.jpeg");
     9             System.out.println(file);
    10             fis = new FileInputStream(file);
    11             
    12             PreparedStatement preparedStatement = connection.prepareStatement("Insert into referencepicture (id,bytepic) values (?,?)");
    13             preparedStatement.setString(1, "1");
    14             preparedStatement.setBinaryStream(2, fis, file.length());
    15             preparedStatement.executeUpdate();
    16             preparedStatement.close();
    17             fis.close();
    18         } catch (SQLException e) {
    19             // TODO Auto-generated catch block
    20             e.printStackTrace();
    21         } catch (FileNotFoundException e) {
    22             // TODO Auto-generated catch block
    23             e.printStackTrace();
    24         } catch (IOException e) {
    25             // TODO Auto-generated catch block
    26             e.printStackTrace();
    27         }
    28     }

    注意:将数据库中对应字段数据类型设置为 image 类型

     1 /**
     2      * 获取数据保存图片文件
     3      * ***************************直接按照路径保存,成功
     4      * @return
     5      * @throws Exception
     6      */
     7     @SuppressWarnings("unused")
     8     public static BufferedImage getImgFromDb() throws Exception {
     9         BufferedImage image = null;
    10         try {
    11 //            PreparedStatement stmt = connection.prepareStatement("select imagesample from reference_picture_test where registrationnumber='35721665'");
    12             PreparedStatement stmt = connection.prepareStatement("select imagesample from reference_mark");
    13             ResultSet rs = stmt.executeQuery();
    14             while(rs.next()){
    15                 image = ImageIO.read(rs.getBinaryStream(1));
    16                 if(image != null){
    17                     Image big = image.getScaledInstance(310, 270, Image.SCALE_DEFAULT);
    18                     BufferedImage biginput = new BufferedImage(310, 270, BufferedImage.TYPE_INT_BGR);
    19                     biginput.getGraphics().drawImage(image, 0, 0, 310, 270, null);
    20                     ImageIO.write(biginput, "jpg", new File("C:/Users/v-guoxiao/Desktop/ReferencePicture/"+UUID.randomUUID()+".jpg"));
    21                 }
    22             }
    23             rs.close();
    24             stmt.close();
    25             connection.close();
    26         } catch (Exception e) {
    27             e.printStackTrace();
    28         }
    29         return image;
    30     }

    基于base64存储图片,对应字段数据类型设置为 varchar(MAX)

     1 /**
     2 *  存储图片  
     3 *
     4 */
     5 static BASE64Encoder encoder = new sun.misc.BASE64Encoder();  
     6     static BASE64Decoder decoder = new sun.misc.BASE64Decoder();
     7     public static void storeBytePic(){
     8         File file = new File("C:/Users/v-guoxiao/Desktop/ReferencePicture/image1.png");
     9         try {
    10             FileInputStream fis = new FileInputStream(file);
    11             byte[] bs = new byte[fis.available()];
    12             fis.read(bs);
    13             fis.close();
    14             BASE64Encoder encoders = new BASE64Encoder();
    15             String endString = encoders.encode(bs);
    16             
    17             PreparedStatement preparedStatement = connection.prepareStatement("Insert into refpic (id,bytepic) values (?,?)");
    18             preparedStatement.setString(1, "1");
    19             preparedStatement.setString(2, endString);
    20             preparedStatement.executeUpdate();
    21             preparedStatement.close();
    22         } catch (IOException e) {
    23             // TODO Auto-generated catch block
    24             e.printStackTrace();
    25         } catch (SQLException e) {
    26             // TODO Auto-generated catch block
    27             e.printStackTrace();
    28         }
    29     }
     1 public static void getBase64Pic(){
     2         PreparedStatement stmt;
     3         try {
     4 //            stmt = connection.prepareStatement("select bytepic from refpic");
     5             stmt = connection.prepareStatement("sselect imagesample from reference_mark");
     6             ResultSet rs = stmt.executeQuery();
     7             while(rs.next()){
     8                 String base = rs.getString(1);
     9                 byte[] bs = decoder.decodeBuffer(base);
    10                 
    11                 for(int i = 0; i < bs.length; i++){
    12                     if(bs[i] < 0){
    13                         bs[i] += 256;
    14                     }
    15                 }
    16                 FileOutputStream fos = new FileOutputStream("C:/Users/v-guoxiao/Desktop/ReferencePicture/"+UUID.randomUUID()+".jpg");
    17                 fos.write(bs);
    18                 fos.flush();
    19                 fos.close();
    20             }
    21             
    22         } catch (SQLException e) {
    23             // TODO Auto-generated catch block
    24             e.printStackTrace();
    25         } catch (IOException e) {
    26             // TODO Auto-generated catch block
    27             e.printStackTrace();
    28         }
    29     }
  • 相关阅读:
    摄像头距离标定方法研究(得到像素和毫米的转换比)
    mfc通过消息传递参数进行程序间通信
    基于Opencv和Mfc的图像处理增强库GOCVHelper(索引)
    【20160924】GOCVHelper MFC增强算法(4)
    【20160924】GOCVHelper 图像处理部分(3)
    Xamarin Essentials教程使用指南针Compass
    Xamarin Essentials教程使用加速度传感器Accelerometer
    XamarinSQLite教程下载安装SQLite/SQL Server Compact Toolbox
    Xamarin Essentials教程屏幕常亮ScreenLock
    Xamarin Essentials教程振动Vibration
  • 原文地址:https://www.cnblogs.com/xiaoyue1606bj/p/11577089.html
Copyright © 2020-2023  润新知