从oracle中读取blob图片资源

来源:互联网 发布:软件体系结构设计文档 编辑:程序博客网 时间:2024/05/17 23:11

1.对应图片资源这张表创建对应的实体类

Ibatisblob.java

private byte[] picresult;public byte[] getPicresult() {        return picresult;    }public void setPicresult(byte[] picresult) {        this.picresult = picresult;    }

2.Dao层中的Dao.java和对应的映射文件sqlmap.xml

Dao.java

public List pic(Map map) {        return this.getSqlMapClientTemplate().queryForList("pic",map);    }

sqlmap.xml

<sqlMap namespace="**" >    <typeAlias alias="ibatisblob" type="cn.**.dao.IbatisBlob" /><select id="pic" parameterClass="java.util.HashMap" resultClass="ibatisblob">        select             pic        from             PICRESULT t         where             t.ispic = 1         and t.id = #id#         and t.name= #name#    </select>

3.service层处理

//获取查询        lllDao llis = (Dao) SpringBeansUtil.getBean("lllDao");        Map<String,String> map1 = new HashMap<String,String>();        //填写参数        map1.put("id", id);        map1.put("name", name);        //1.接收二进制的图片        List<IbatisBlob> imgResource = llis.pic(map1);        String str1 = null;        if(imgResource != null && imgResource.size()>0) {            byte[] picresult = imgResource.get(0).getPicresult();            //加密运算之后 将byte[]转化为base64            byte[] encodeBase64 = Base64.encodeBase64(picresult);            str1 = new String(encodeBase64);        }        //按照base64进行解密        byte[] decodeBase64 = Base64.decodeBase64(encodeBase64);        byte2image(decodeBase64, "G:\\1\\2.jpeg");

图片与字节数组相互转换

//图片到byte数组  public byte[] image2byte(String path){    byte[] data = null;    FileImageInputStream input = null;    try {      input = new FileImageInputStream(new File(path));      ByteArrayOutputStream output = new ByteArrayOutputStream();      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();    }    catch (FileNotFoundException ex1) {      ex1.printStackTrace();    }    catch (IOException ex1) {      ex1.printStackTrace();    }    return data;  }/////////////////////////////////////byte数组到图片  public void byte2image(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数组到16进制字符串  public String byte2string(byte[] data){    if(data==null||data.length<=1) return "0x";    if(data.length>200000) return "0x";    StringBuffer sb = new StringBuffer();    int buf[] = new int[data.length];    //byte数组转化成十进制    for(int k=0;k<data.length;k++){      buf[k] = data[k]<0?(data[k]+256):(data[k]);    }    //十进制转化成十六进制    for(int k=0;k<buf.length;k++){      if(buf[k]<16) sb.append("0"+Integer.toHexString(buf[k]));      else sb.append(Integer.toHexString(buf[k]));    }    return "0x"+sb.toString().toUpperCase();  }
原创粉丝点击