码迷,mamicode.com
首页 > 其他好文 > 详细

图片的各种转换

时间:2016-07-15 13:51:32      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:图片转换

    花了一早上的时间总结了下图片的各种转换方式,在此分享下。

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.util.Base64;

import javax.imageio.stream.FileImageInputStream;
import javax.imageio.stream.FileImageOutputStream;


public class ccc {
	public static void main(String[] args) throws Exception{
		File file=new File("D://2.png");
//		File file2=new File("D://3.png");
		byte data[]=imageTobyte(file);
//		String str=byteTohex(data);
//		byte data2[]=hexTobyte(str);
		byteToimage(Base64StringTobyte(byteToBase64String(data)),"d://aaaa.png");
	}
	//图片转二进制
	public static byte[] imageTobyte(File file)throws Exception{
		FileImageInputStream input =new FileImageInputStream(file);
		 ByteArrayOutputStream output = new ByteArrayOutputStream();
		  byte[] data = null;
		  byte[] buf = new byte[1024];
	      int numBytesRead = 0;
	      while ((numBytesRead = input.read(buf)) != -1) {
	      output.write(buf, 0, numBytesRead);
	      }
	      data = output.toByteArray();
	      output.close();
	      input.close();
		return data;
	}
	//二进制转字符串
	public static String byteTohex(byte[] b)throws Exception{  
        StringBuffer sb = new StringBuffer();  
        String stmp = "";  
        for (int n = 0; n < b.length; n++) {  
            stmp = Integer.toHexString(b[n] & 0XFF);  
            if (stmp.length() == 1) {  
                sb.append("0" + stmp);  
            } else {  
                sb.append(stmp);  
            }  
        }  
        return sb.toString();  
    }  
	//字符串转二进制
	public static byte[] hexTobyte(String str) {  
        if (str == null)  
            return null;  
        str = str.trim();  
        int len = str.length();  
        if (len == 0 || len % 2 == 1)  
            return null;  
        byte[] b = new byte[len / 2];  
        try {  
            for (int i = 0; i < str.length(); i += 2) {  
                b[i / 2] = (byte) Integer.decode("0X" + str.substring(i, i + 2)).intValue();  
            }  
            return b;  
        } catch (Exception e) {  
            return null;  
        }  
    }  
	//二进制转图片 path为图片地址
	public static void byteToimage(byte[] data,String path){
	    if(data.length<3||path.equals("")) return;
	    try{
	    FileImageOutputStream imageOutput = new FileImageOutputStream(new File(path));
	    imageOutput.write(data, 0, data.length);
	    imageOutput.close();
	    System.out.println("Make Picture success,Please find image in " + path);
	    } catch(Exception ex) {
	      System.out.println("Exception: " + ex);
	      ex.printStackTrace();
	    }
	  }
	//二进制byte[] 转 base64字符串
	public static String byteToBase64String(byte[] data){
		String Base64String=Base64.getEncoder().encodeToString(data);
		return Base64String;
		}
	//base64字符串 转 二进制byte[]
	public static byte[] Base64StringTobyte(String Base64String) {
		byte[] bytes = Base64.getDecoder().decode(Base64String);
		return bytes;
	}	

图片转字符串建议使用base64的转换方式,base64字符串传到前台可以直接显示出来。

格式为<img  src="data:image/jpg;base64,base64字符串"/>

注:此处的 util.base64包是jdk1.8才有的



图片的各种转换

标签:图片转换

原文地址:http://11745766.blog.51cto.com/11735766/1826621

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!