<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    tinguo002

     

    圖片轉字符串


    事例1:
    package com.apexsoft.mobile.utils;

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;

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

    public class ImgToString {

        
    public static String getImageStr(String imgFile) {// 將圖片文件轉化為字節數組字符串,并對其進行Base64編碼處理
            
    // String imgFile = "d:\\111.jpg";// 待處理的圖片
            InputStream in = null;
            
    byte[] data = null;
            
    // 讀取圖片字節數組
            try {
                in 
    = new FileInputStream(imgFile);
                data 
    = new byte[in.available()];
                in.read(data);
                in.close();
            }
     catch (IOException e) {
                e.printStackTrace();
            }

            
    // 對字節數組Base64編碼
            BASE64Encoder encoder = new BASE64Encoder();
            
    return encoder.encode(data);// 返回Base64編碼過的字節數組字符串
        }


        
    /**
         * 將字符串轉為圖片
         * 
         * 
    @param imgStr
         * 
    @return
         
    */

        
    public static boolean generateImage(String imgStr, String imgFile)
                
    throws Exception {// 對字節數組字符串進行Base64解碼并生成圖片
            if (imgStr == null// 圖像數據為空
                return false;
            BASE64Decoder decoder 
    = new BASE64Decoder();
            
    try {
                
    // Base64解碼
                byte[] b = decoder.decodeBuffer(imgStr);
                
    for (int i = 0; i < b.length; ++i) {
                    
    if (b[i] < 0{// 調整異常數據
                        b[i] += 256;
                    }

                }

                
    // 生成jpeg圖片
                String imgFilePath = imgFile;// 新生成的圖片
                OutputStream out = new FileOutputStream(imgFilePath);
                out.write(b);
                out.flush();
                out.close();
                
    return true;
            }
     catch (Exception e) {
                
    throw e;
            }

        }


        
    public static void main(String[]args){
            String imgStr 
    = ImgToString.getImageStr("C:\\Users\\think\\Pictures\\打開Intenet選項1.jpg");
            System.out.println(imgStr);
            
    try {
                ImgToString.generateImage(imgStr, 
    "D:\\3.jpg");
            }
     catch (Exception e) {
                e.printStackTrace();
            }

        }

        
    }








    事例2:
    package com.apexsoft.mobile.utils;

    import java.awt.image.BufferedImage;
    import java.io.BufferedInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.RandomAccessFile;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLConnection;

    import javax.imageio.ImageIO;

    public class ImgToString2 {

        
    /**
         * @Title            getImgeHexString
         * @Description     網絡圖片轉換成二進制字符串
         * 
    @param URLName    網絡圖片地址
         * 
    @param type        圖片類型
         * 
    @return    String    轉換結果
         * 
    @throws
         
    */

        
    /*
        public static String getImgeHexString(String URLName,String type) {
            String res = null;
            try {
                int HttpResult = 0; // 服務器返回的狀態
                URL url = new URL(URLName); // 創建URL
                URLConnection urlconn = url.openConnection(); // 試圖連接并取得返回狀態碼
                urlconn.connect();
                HttpURLConnection httpconn = (HttpURLConnection) urlconn;
                HttpResult = httpconn.getResponseCode();
                System.out.println(HttpResult);
                if (HttpResult != HttpURLConnection.HTTP_OK) // 不等于HTTP_OK則連接不成功
                    System.out.print("fail");
                else {
                    BufferedInputStream bis = new BufferedInputStream(urlconn.getInputStream());

                    BufferedImage bm = ImageIO.read(bis);
                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
                    ImageIO.write(bm, type, bos);
                    bos.flush();
                    byte[] data = bos.toByteArray();

                    res = byte2hex(data);
                    bos.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return res;
        }
    */

        
    public static void main(String[]args){
            String imgStr 
    = ImgToString2.getImgeHexString("C:\\Users\\think\\Pictures\\打開Intenet選項1.jpg");
            System.out.println(imgStr);
            
        }

        
    public static String getImgeHexString(String imgFile) {
            String res 
    = null;
            
    try {
                    InputStream in 
    = null;
                    
    byte[] data = null;
                    
    // 讀取圖片字節數組
                    
                        in 
    = new FileInputStream(imgFile);
                        data 
    = new byte[in.available()];
                        in.read(data);
                        in.close();
                    
                    BufferedInputStream bis 
    = new BufferedInputStream(in);

                    BufferedImage bm 
    = ImageIO.read(bis);
                    ByteArrayOutputStream bos 
    = new ByteArrayOutputStream();
                    ImageIO.write(bm, 
    "jpg", bos);
                    bos.flush();
                    data 
    = bos.toByteArray();

                    res 
    = byte2hex(data);
                    bos.close();
                
            }
     catch (Exception e) {
                e.printStackTrace();
            }

            
    return res;
        }

        
        
    /**
         * @title            根據二進制字符串生成圖片
         * 
    @param data         生成圖片的二進制字符串
         * 
    @param fileName     圖片名稱(完整路徑)
         * 
    @param type        圖片類型
         * 
    @return
         
    */

        
    public static void saveImage(String data, String fileName,String type) {

            BufferedImage image 
    = new BufferedImage(300300,BufferedImage.TYPE_BYTE_BINARY);
            ByteArrayOutputStream byteOutputStream 
    = new ByteArrayOutputStream();
            
    try {
                ImageIO.write(image, type, byteOutputStream);
                
    // byte[] date = byteOutputStream.toByteArray();
                byte[] bytes = hex2byte(data);
                System.out.println(
    "path:" + fileName);
                RandomAccessFile file 
    = new RandomAccessFile(fileName, "rw");
                file.write(bytes);
                file.close();
            }
     catch (IOException e) {
                e.printStackTrace();
            }

        }

        
        
    /**
         * 反格式化byte
         * 
         * 
    @param s
         * 
    @return
         
    */

        
    public static byte[] hex2byte(String s) {
            
    byte[] src = s.toLowerCase().getBytes();
            
    byte[] ret = new byte[src.length / 2];
            
    for (int i = 0; i < src.length; i += 2{
                
    byte hi = src[i];
                
    byte low = src[i + 1];
                hi 
    = (byte) ((hi >= 'a' && hi <= 'f'? 0x0a + (hi - 'a')
                        : hi 
    - '0');
                low 
    = (byte) ((low >= 'a' && low <= 'f'? 0x0a + (low - 'a')
                        : low 
    - '0');
                ret[i 
    / 2= (byte) (hi << 4 | low);
            }

            
    return ret;
        }


        
    /**
         * 格式化byte
         * 
         * 
    @param b
         * 
    @return
         
    */

        
    public static String byte2hex(byte[] b) {
            
    char[] Digit = '0''1''2''3''4''5''6''7''8''9''A',
                    
    'B''C''D''E''F' }
    ;
            
    char[] out = new char[b.length * 2];
            
    for (int i = 0; i < b.length; i++{
                
    byte c = b[i];
                out[i 
    * 2= Digit[(c >>> 4& 0X0F];
                out[i 
    * 2 + 1= Digit[c & 0X0F];
            }


            
    return new String(out);
        }

        
    }



     

    歡迎大家訪問我的個人網站 萌萌的IT人

    posted on 2014-08-05 11:30 一堣而安 閱讀(1549) 評論(0)  編輯  收藏 所屬分類: java

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    收藏夾

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费国产成人午夜在线观看| 最近免费中文字幕高清大全| 亚洲精品成人片在线播放| 久久精品成人免费观看| 亚洲国产成人精品激情| 亚洲熟女乱综合一区二区| 日日麻批免费40分钟无码| 亚洲av永久无码一区二区三区| 成人午夜亚洲精品无码网站| 18禁免费无码无遮挡不卡网站 | 永久免费毛片手机版在线看| 中文字幕不卡免费视频| 99999久久久久久亚洲| 亚洲国产成人五月综合网 | 99久热只有精品视频免费看| 亚洲AV无码一区二区三区性色| 亚洲精品国产精品乱码视色| 岛国片在线免费观看| 免费无码一区二区三区蜜桃| 亚洲av乱码中文一区二区三区| 久久香蕉国产线看观看亚洲片| 国产大片免费观看中文字幕| 1000部禁片黄的免费看| 五月天婷婷免费视频| 波多野结衣亚洲一级| 亚洲AV日韩AV永久无码绿巨人| 亚洲av高清在线观看一区二区 | 亚洲av乱码一区二区三区按摩| 久久国产亚洲高清观看| 久久亚洲中文字幕精品一区| 毛片免费在线观看网址| 久久久高清日本道免费观看| 男女猛烈无遮掩视频免费软件| 自拍偷区亚洲国内自拍| 久久国产亚洲高清观看| 亚洲国产精品无码久久久蜜芽| 亚洲国产中文字幕在线观看| 天天干在线免费视频| 免费观看的毛片大全| 91av视频免费在线观看| 成人性生交大片免费看中文|