j2me图片转换为二进制的解决办法?

来源:互联网 发布:大数据为什么在贵阳 编辑:程序博客网 时间:2024/04/30 16:09
 /**** 
 * @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;  
}  
 
/** *//** 
 * @title           根据二进制字符串生成图片 
 * @param data      生成图片的二进制字符串 
 * @param fileName  图片名称(完整路径) 
 * @param type      图片类型 
 * @return 
 */ 
public static void saveImage(String data, String fileName,String type) {  
 
    BufferedImage image = new BufferedImage(300, 300,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);  
原创粉丝点击