文件中图片与Base64编码转换实例

public class IOStream{

    public static void main(String args[]) {

        String filePath = "D:\\fileupload\\3aee3357e5f745e4ab0b744b12d59ca6\\fileComplaint\\";
        File file = new File(filePath);

        if (!file.exists()) {
            System.out.println(filePath + "Not Exists.");
            return;
        }

        if (file.isFile()) {
            FileInputStream fileInputStream = null;
            FileOutputStream fileOutputStream = null;
            try {
                fileInputStream = new FileInputStream(file);
                byte[] bb = new byte[(int) file.length()];
                fileInputStream.read(bb);
                fileOutputStream.write(bb);

            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    fileInputStream.close();
                    fileOutputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } else if (file.isDirectory()) {

            File[] fileList = file.listFiles();
            String[] list = file.list();
            for (int i = 0; i < fileList.length; i++) {
                File imgPath = fileList[i];
                String imgNamePath = list[i];
                System.out.println("文件名字"+imgNamePath+  "文件file"+imgPath);
                System.out.println("图片所在系统路径:"+filePath+imgNamePath);
                GetImageStr(filePath+imgNamePath);
                System.out.println(GetImageStr(filePath+imgNamePath));
            }
        }
    }
    /*
        图片转为Base64,将图片文件转化为字节数组字符串,并对其进行Base64编码处理
     */
    public static String GetImageStr(String imgFilePath) {
        byte[] data = null;

        // 读取图片字节数组
        try {
            InputStream in = new FileInputStream(imgFilePath);
            data = new byte[in.available()];
            in.read(data);
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);// 返回Base64编码过的字节数组字符串
    }

    /*
        base64码转为图片,对字节数组字符串进行Base64解码并生成图片
     */
    public static boolean GenerateImage(String imgStr, String imgFilePath) {
        if (imgStr == null) // 图像数据为空
            return false;
        BASE64Decoder decoder = new BASE64Decoder();
        try {
            // Base64解码
            byte[] bytes = decoder.decodeBuffer(imgStr);
            for (int i = 0; i < bytes.length; ++i) {
                if (bytes[i] < 0) {// 调整异常数据
                    bytes[i] += 256;
                }
            }
            // 生成jpeg图片
            OutputStream out = new FileOutputStream(imgFilePath);
            out.write(bytes);
            out.flush();
            out.close();
            return true;
        } catch (Exception e) {
            return false;
        }

    }
}

猜你喜欢

转载自blog.csdn.net/lesouls/article/details/80180447
今日推荐