接口上传base64编码图片

摘要:
1包装公司*。效用;23导入java.io。文件输入流;456导入java.io。文件输出流;7导入java.io。IOException;8导入java.io。输入流;9导入java.io。输出流;10导入java.util。日期1112导入
 1 package com.*.util;
 2 
 3 import java.io.FileInputStream;
 4 
 5 
 6 import java.io.FileOutputStream;
 7 import java.io.IOException;
 8 import java.io.InputStream;
 9 import java.io.OutputStream;
10 import java.util.Date;
11 
12 import Decoder.BASE64Decoder;
13 import Decoder.BASE64Encoder;
14 
15 public class Base64ImgUtils {
16     public static void main(String[] args) {
17         String strImg = GetImageStr();
18         System.out.println(strImg);        
19         GenerateImage(strImg);
20     }
21 
22     /**
23      * 图片转化成base64字符串
24      * GetImageStr
25      * 2016年8月31日下午3:37:40   
26      * @param
27      * @return
28      */
29     public static String GetImageStr() {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
30         String imgFile = "D:/486e407765c21edd9cbffca69717efb1.jpg";// 待处理的图片
31         InputStream in = null;
32         byte[] data = null;
33         // 读取图片字节数组
34         try {
35             in = new FileInputStream(imgFile);
36             data = new byte[in.available()];
37             in.read(data);
38             in.close();
39         } catch (IOException e) {
40             e.printStackTrace();
41         }
42         // 对字节数组Base64编码
43         BASE64Encoder encoder = new BASE64Encoder();
44         String imghead="data:image/jpg;base64,";//
45         return imghead+encoder.encode(data);// 返回Base64编码过的字节数组字符串
46     }
47 
48     /**
49      * base64字符串转化成图片
50      * GenerateImage
51      * 2016年8月31日下午3:33:12   
52      * @param
53      * @return
54      */
55     public static String GenerateImage(String imgStr) { // 对字节数组字符串进行Base64解码并生成图片
56         if (imgStr == null){ // 图像数据为空
57             return "";
58         }
59         String classPath = new Base64ImgUtils().getClass().getResource("").getPath();
60         String path = classPath.substring(0, classPath.indexOf("WEB-INF"));
61         System.out.println(path);
62         BASE64Decoder decoder = new BASE64Decoder();
63         try {
64             String imghead=imgStr.substring(0,imgStr.indexOf(";")).replace("data:image/", ".");//获取图片扩展名
65             imgStr=imgStr.substring(imgStr.indexOf(",")+1);//图片内容
66                                    
67             // Base64解码
68             byte[] b = decoder.decodeBuffer(imgStr);
69             for (int i = 0; i < b.length; ++i) {
70                 if (b[i] < 0) {// 调整异常数据
71                     b[i] += 256;
72                 }
73             }
74             // 生成jpeg图片
75             String filename="upload/"+new Date().getTime()+imghead;//名称
76             String imgFilePath =path+"/"+filename;// 新生成的图片
77             OutputStream out = new FileOutputStream(imgFilePath);
78             out.write(b);
79             out.flush();
80             out.close();
81             return filename;
82         } catch (Exception e) {
83             return "";
84         }
85     }
86 
87     
88 }

免责声明:文章转载自《接口上传base64编码图片》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SpringBootSecurity学习(25)前后端分离版之OAuth2.0 令牌中继牛客网2017校招真题在线编程之合唱团问题——动态规划问题首秀下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Shiro remeberMe反序列化漏洞(Shiro-550)

1.漏洞原理 Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。 那么,Payload产生的过程:命令=》序列化=》AES加密=》base64编码=》Remembe...

Delphi 匿名函数的几个实际应用(二)

Timing Anonymous Methods 计时功能匿名函数   开发者们经常需要添加计时代码到一个已有的常规过程中,比较他们的相关速度。前面例子已经使用了几次实例,指出Uncode字符执行速度。对比两个代码片段,比较他们的执行毫秒数,妳可以写出下面内容(在本书第二章的“转换字符”例子):   [delphi]view plaincopy...

使用thumbnailator 时部分图片抛异常

net.coobird.thumbnailator.tasks.UnsupportedFormatException: No suitable ImageReader found for source data. at net.coobird.thumbnailator.tasks.io.InputStreamImageSource.read(U...

c#读入,写入文本文件

老师留下的作业最后一条题目用到了,就百度下找到了例子修改成两个函数子程序方便使用. //********************************************** //函数名:ReadFile //功能:把指定文本内的数据读出并返回 //参数: FileName文件名 //返...

Base64工具类:将前端vue与后台SpringBoot传输的参数进行加密和解密

一、前端加密 1.引入base64依赖: cnpm install --save js-base64 2.使用base4对参数进行加密: let Base64 = require('js-base64').Base64 //加密方法 let password =Base64.encode(password);//解密方法 //let password =...

JAVA 利用反射自定义数据层框架

       之前的随笔一直都在介绍c#,主要公司最近的业务都是做桌面程序,那么目前c#中的WPF肯定是我做桌面程序的不二之选,做了半年的WPF,也基本摸清了c#写代码的套路和规则(本人之前是两年多的JAVA开发者,除了大学没有接触过任何c#的编程),我在大三开始搞工作室,接网站的单子,最难过的时候,一个人要写前台后台,说实话是JAVA把我引上了这条程序员...