zoukankan      html  css  js  c++  java
  • java 图片与文件之间互转

    package com.sxt.io;
    
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    /**
     *1、 图片读取到字节数组
     *2、 字节数组写出到文件
     *  @author 裴新
     *
     */
    public class IOTest09 {
    
        public static void main(String[] args) {
            //图片转成字节数组
            byte[] datas = fileToByteArray("p.png");
            System.out.println(datas.length);
            byteArrayToFile(datas,"p-byte.png");        
        }
        /**
         * 1、图片读取到字节数组
         * 1)、图片到程序  FileInputStream
         * 2)、程序到字节数组    ByteArrayOutputStream
         */
        public static byte[] fileToByteArray(String filePath) {
            //1、创建源与目的地
            File src = new File(filePath);
            byte[] dest =null;
            //2、选择流
            InputStream  is =null;
            ByteArrayOutputStream baos =null;
            try {
                is =new FileInputStream(src);
                baos = new ByteArrayOutputStream();
                //3、操作 (分段读取)
                byte[] flush = new byte[1024*10]; //缓冲容器
                int len = -1; //接收长度
                while((len=is.read(flush))!=-1) {
                    baos.write(flush,0,len);         //写出到字节数组中            
                }        
                baos.flush();
                return baos.toByteArray();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                //4、释放资源
                try {
                    if(null!=is) {
                        is.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;        
        }
        /**
         * 2、字节数组写出到图片
         * 1)、字节数组到程序 ByteArrayInputStream
         * 2)、程序到文件 FileOutputStream
         */
        public static void byteArrayToFile(byte[] src,String filePath) {
            //1、创建源
            File dest = new File(filePath);
            //2、选择流
            InputStream  is =null;
            OutputStream os =null;
            try {
                is =new ByteArrayInputStream(src);
                os = new FileOutputStream(dest);
                //3、操作 (分段读取)
                byte[] flush = new byte[5]; //缓冲容器
                int len = -1; //接收长度
                while((len=is.read(flush))!=-1) {
                    os.write(flush,0,len);            //写出到文件    
                }        
                os.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                //4、释放资源
                try {
                    if (null != os) {
                        os.close();
                    } 
                } catch (Exception e) {
                }
            }
        }
    }
  • 相关阅读:
    C 语言
    How does Chrome Extension crx Downloader work? ——— From crxdown.com
    做作业时看到的 Demo
    IDEA 插件收集
    [E] Shiro 官方文档阅读笔记 The Reading Notes of Shiro's Offical Docs
    烦人的 Python 依赖
    机器学习之路--Numpy
    机器学习之路--朴素贝叶斯
    机器学习之路--决策树
    机器学习之路--KNN算法
  • 原文地址:https://www.cnblogs.com/GOOGnine/p/14199330.html
Copyright © 2011-2022 走看看