java实现图片转化为字节流,字节流还原成图片

最近,在研究图片转化为字节流以及字节流还原成图片的,

项目下载地址:http://download.csdn.net/detail/u010627840/9397506

代码如下:

package com.mybatis.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class TestImage {
	
	 public static void main(String[] args) throws Exception
	    {
	        //先模拟一个图形byte[]
	        byte[] b1 =image2Bytes("d:\\1.jpg");
	        //存为文件
	        buff2Image(b1,"d:\\test.jpg");
	 
	        System.out.println("Hello World!");
	    }
	 
	 static void buff2Image(byte[] b,String tagSrc) throws Exception
	    {
	        FileOutputStream fout = new FileOutputStream(tagSrc);
	        //将字节写入文件
	        fout.write(b);
	        fout.close();
	    }
	 
	 static byte[] image2Bytes(String imgSrc) throws Exception
	    {
	        FileInputStream fin = new FileInputStream(new File(imgSrc));
	        //可能溢出,简单起见就不考虑太多,如果太大就要另外想办法,比如一次传入固定长度byte[]
	        byte[] bytes  = new byte[fin.available()];
	        //将文件内容写入字节数组,提供测试的case
	        fin.read(bytes);
	        
	        fin.close();
	        return bytes;
}
	 
}

如何判断图片类型  

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.MemoryCacheImageInputStream;
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Iterator; 
/**
 *  根据字节流获取图片类型
 * */
public static String getImageType(byte[] imageBytes) {
    try {
        MemoryCacheImageInputStream memoryCacheImageInputStream = new MemoryCacheImageInputStream(new ByteArrayInputStream(imageBytes));
        Iterator<ImageReader> itr = ImageIO.getImageReaders(memoryCacheImageInputStream);
        while (itr.hasNext()) {
            ImageReader reader = itr.next();
            String imageName = reader.getClass().getSimpleName();
            if (imageName != null) {
                if ("JPEGImageReader".equalsIgnoreCase(imageName)){
                    return "jpeg";
                }
                if ("JPGImageReader".equalsIgnoreCase(imageName)) {
                    return "jpg";
                }
                if ("pngImageReader".equalsIgnoreCase(imageName)) {
                    return "png";
                }
            }
        }
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
    return null;
}

 如何改变图片格式

//把这个jpg图像写到这个流中去,这里可以转变图片的编码格式
boolean resultWrite = ImageIO.write(bu, "jpg", imageStream);

 

 

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页