文档章节

java --Base64编码/解码图片

求是科技
 求是科技
发布于 2016/01/15 17:45
字数 493
阅读 161
收藏 0

工程做完了,用到了图片字符流的转换,特此记录下来

package com.cheqiren.caren.util;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;

import javax.imageio.ImageIO;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**    
程序名     ImageUtils.java
程序功能    Base64编码和解码图片文件
作成者                  xxx
作成日期    2015-11-05
======================修改履历======================
项目名                    状态            作成者        作成日期
--------------------------------------------------
caren                新规            xxx        2015-11-05
=================================================
*/

@SuppressWarnings("restriction")
public class ImageUtils {
    
    /**
    * 将网络图片进行Base64位编码
    * 
    * @param imgUrl
    *            图片的url路径,如http://.....xx.jpg
    * @return
    */
    public static String encodeImgageToBase64(URL imageUrl) throws Exception {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
        ByteArrayOutputStream outputStream = null;

        BufferedImage bufferedImage = ImageIO.read(imageUrl);
        outputStream = new ByteArrayOutputStream();
        ImageIO.write(bufferedImage, "jpg", outputStream);

        // 对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        // 返回Base64编码过的字节数组字符串
        return encoder.encode(outputStream.toByteArray());
    }
    
    /**
    * 将本地图片进行Base64位编码
    * 
    * @param imgUrl
    *            图片的url路径,如http://.....xx.jpg
    * @return
    */
    public static String encodeImgageToBase64(File imageFile) throws Exception {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
        ByteArrayOutputStream outputStream = null;
        BufferedImage bufferedImage = ImageIO.read(imageFile);
        outputStream = new ByteArrayOutputStream();
        ImageIO.write(bufferedImage, "jpg", outputStream);
        // 对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(outputStream.toByteArray());// 返回Base64编码过的字节数组字符串
    }
    
    /**
    * 将Base64位编码的图片进行解码,并保存到指定目录
    * 
    * @param base64
    *            base64编码的图片信息
    * @param path
    *             文件存储的路径
    * @param imgName
    *             保存的文件名
    * @return
    */
    public static void decodeBase64ToImage(String base64, String path,
            String imgName) throws Exception {
        BASE64Decoder decoder = new BASE64Decoder();
        FileUtils.creatFolder(path);
        FileOutputStream write = new FileOutputStream(new File(path
                + imgName));
        byte[] decoderBytes = decoder.decodeBuffer(base64);
        write.write(decoderBytes);
        write.close();
    }
    
    /**
    * 将字符流图片进行解码,并保存到指定目录
    * 
    * @param stream
    *            文件字符流
    * @param path
    *             文件存储的路径
    * @param imgName
    *             保存的文件名
    * @return
    */
    @SuppressWarnings("unused")
    public static void saveFileFromInputStream(InputStream stream,String path,
            String imgName) throws Exception{
        FileUtils.creatFolder(path);
        FileOutputStream fs=new FileOutputStream(path + imgName);
        System.out.println("文件保存路径:"+path + imgName);
        byte[] buffer =new byte[1024*1024];
        int bytesum = 0;
        int byteread = 0;
        while ((byteread=stream.read(buffer))!=-1){
            bytesum += byteread;
            fs.write(buffer,0,byteread);
            fs.flush();
        }
         fs.close();
         stream.close();
         System.out.println("文件写入完毕。");
    }
}


© 著作权归作者所有

上一篇: java --文件操作
下一篇: java --推送
求是科技

求是科技

粉丝 98
博文 451
码字总数 232301
作品 0
成都
后端工程师
私信 提问
Java base64图片编码上传,判断图片是否有旋转,修正并保存

最近遇到一个问题,手机端上传的图片为base64编码格式的,服务器需要通过解码字符串然后判断图片是否有旋转角度,在保存为图片。手上有一个.net的例子,但需要转为Java语言的,由于对Java的类...

OSC-原谅帽派送员
2016/06/20
1K
2
Base64 编码和解码 java=》C#

通过java将word文件二进制流使用Base64编码后,现在我想用C#来进行解码,希望能够得到对应的word文件,需要怎么弄? 下面附上java那边的解码方法: 待解码的xml如下:...

Freekingismy
2013/01/07
1K
1
java单向加密算法小结(1)--Base64算法

  从这一篇起整理一下常见的加密算法以及在java中使用的demo,首先从最简单的开始. 简单了解 Base64严格来说并不是一种加密算法,而是一种编码/解码的实现方式.   我们都知道,数据在计算机...

冬至饮雪
2016/11/03
0
0
java Base64转码传图到C#

项目碰到一个需求,需要把后台的图片,传到终端去. Java服务端用webService传XMl格式数据到C#终端。 实现的思路是把图片字节流用Base64转码,到C#在解码。 开始的时候,在C#端死活转不回图片。后...

无小农
2018/08/17
0
0
Java8 BASE64编解码

Java8 BASE64编解码 Base64是一种用64个字符来表示任意二进制数据的方法。 Base64是一种最常见的二进制编码方法。 Java一直缺少BASE64编码 API,以至于通常在项目开发中会选用第三方的API...

秋风醉了
2015/04/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面试爱奇艺,竟然挂在第5轮……

今天给大家分享我曾经在爱奇艺的面试,过程还是比较有意思的,可以给大家一些参考 <br> 聊骚阶段 嗲妹妹:你好,我是爱奇艺的HR,我们正在招聘运维开发岗位,请问您最近有在看工作机会吗? ...

上海小胖
今天
5
0
Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
解决多线程并行加载缓存问题(利用guava实现)

依赖 com.google.guava:guava:20.0 import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import j......

暗中观察
昨天
4
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部