将二进制流转换成图片文件

来源:互联网 发布:sublime的python插件 编辑:程序博客网 时间:2024/06/05 00:29
importjava.io.ByteArrayInputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.InputStream;
 
/**
 * 将二进制流转换成图片文件
 * @author 晚风工作室 www.soservers.com
 *
 */
 
publicclass ImgErToFileUtil {
     
    /**
     * 将接收的字符串转换成图片保存
     * @param imgStr 二进制流转换的字符串
     * @param imgPath 图片的保存路径
     * @param imgName 图片的名称
     * @return
     *      1:保存正常
     *      0:保存失败
     */
    publicstatic int saveToImgByStr(String imgStr,String imgPath,String imgName){
try{
    System.out.println("===imgStr.length()====>"+ imgStr.length()
            +"=====imgStr=====>"+ imgStr);
}catch(Exception e) {
    e.printStackTrace();
}
        intstateInt = 1;
        if(imgStr != null&& imgStr.length() > 0){
            try{
                 
                // 将字符串转换成二进制,用于显示图片 
                // 将上面生成的图片格式字符串 imgStr,还原成图片显示 
                byte[] imgByte = hex2byte( imgStr ); 
     
                InputStream in = newByteArrayInputStream(imgByte);
     
                File file=newFile(imgPath,imgName);//可以是任何图片格式.jpg,.png等
                FileOutputStream fos=newFileOutputStream(file);
                   
                byte[] b = newbyte[1024];
                intnRead = 0;
                while((nRead = in.read(b)) != -1) {
                    fos.write(b,0, nRead);
                }
                fos.flush();
                fos.close();
                in.close();
     
            }catch(Exception e) {
                stateInt = 0;
                e.printStackTrace();
            }finally{
            }
        }
        returnstateInt;
    }
     
    /**
     * 将二进制转换成图片保存
     * @param imgStr 二进制流转换的字符串
     * @param imgPath 图片的保存路径
     * @param imgName 图片的名称
     * @return
     *      1:保存正常
     *      0:保存失败
     */
    publicstatic int saveToImgByBytes(File imgFile,String imgPath,String imgName){
 
        intstateInt = 1;
        if(imgFile.length() > 0){
            try{
                File file=newFile(imgPath,imgName);//可以是任何图片格式.jpg,.png等
                FileOutputStream fos=newFileOutputStream(file);
                 
                FileInputStream fis = newFileInputStream(imgFile);
                   
                byte[] b = newbyte[1024];
                intnRead = 0;
                while((nRead = fis.read(b)) != -1) {
                    fos.write(b,0, nRead);
                }
                fos.flush();
                fos.close();
                fis.close();
     
            }catch(Exception e) {
                stateInt = 0;
                e.printStackTrace();
            }finally{
            }
        }
        returnstateInt;
    }
 
    /**
     * 二进制转字符串
     * @param b
     * @return
     */
    publicstatic String byte2hex(byte[] b) // 二进制转字符串
    {
        StringBuffer sb = newStringBuffer();
        String stmp = "";
        for(intn = 0; n < b.length; n++) {
            stmp = Integer.toHexString(b[n] & 0XFF);
            if(stmp.length() == 1) {
                sb.append("0"+ stmp);
            }else{
                sb.append(stmp);
            }
 
        }
        returnsb.toString();
    }
 
    /**
     * 字符串转二进制
     * @param str 要转换的字符串
     * @return  转换后的二进制数组
     */
    publicstatic byte[] hex2byte(String str) { // 字符串转二进制
        if(str == null)
            returnnull;
        str = str.trim();
        intlen = str.length();
        if(len == 0|| len % 2== 1)
            returnnull;
        byte[] b = newbyte[len / 2];
        try{
            for(inti = 0; i < str.length(); i += 2) {
                b[i / 2] = (byte) Integer
                        .decode("0X"+ str.substring(i, i + 2)).intValue();
            }
            returnb;
        }catch(Exception e) {
            returnnull;
        }
    }
     
}
0 0
原创粉丝点击