首页 > 开发 > Java > 正文

java读取图片并转化为二进制字符串的实现方法

2024-07-14 08:42:22
字体:
来源:转载
供稿:网友

本例子的目的在于测试往oracle数据库中插入blob字段

public static String getImgStr(String imgFile){  //将图片文件转化为字节数组字符串,并对其进行Base64编码处理    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();  }  return new String(Base64.encodeBase64(data)); }

--

利用以上的思路写的一个测试

public class ReadImageTest { public static void main(String[] args) throws IOException {   FileInputStream fis = new FileInputStream(new File("C://Users//luzhifei//Pictures//hc_logo.png"));      String picStr="";   byte[] read = null;   int len = 0;   read= new byte[fis.available()];   fis.read(read);   String baseStr= Base64.getEncoder().encodeToString(read);   //System.out.println( baseStr);   byte[] op= Base64.getDecoder().decode(baseStr);   // System.out.println(new String(op));   FileOutputStream fos = new FileOutputStream(new File("d://temp//1.jpg"));   fos.write(op,0,op.length );   fos.flush();   fos.close(); }}

但是available()有一定的限制。

为了稳妥,严重建议采取以下方式:

public static void imageToBase64Str() throws IOException{   FileInputStream fis = new FileInputStream(new File("C://Users//luzhifei//Pictures//hc_logo.png"));   byte[] read = new byte[1024];   int len = 0;   List<byte[]> blist=new ArrayList<byte[]>();   int ttllen=0;   while((len = fis.read(read))!= -1){    byte[] dst=new byte[len];    System.arraycopy(read, 0, dst, 0, len);    ttllen+=len;    blist.add(dst);   }   fis.close();   byte[] dstByte=new byte[ttllen];   int pos=0;   for (int i=0;i<blist.size();i++){    if (i==0){     pos=0;    }    else{    pos+=blist.get(i-1).length;     }    System.arraycopy(blist.get(i), 0, dstByte, pos, blist.get(i).length);   }   String baseStr= Base64.getEncoder().encodeToString(dstByte);   byte[] op= Base64.getDecoder().decode(baseStr);   FileOutputStream fos = new FileOutputStream(new File("d://temp//2.jpg"));   fos.write(op,0,op.length );   fos.flush();   fos.close(); }

总结

以上所述是小编给大家介绍的java读取图片并转化为二进制字符串,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表