本篇文章给大家带来的内容是关于java如何获得图片同时转为二进制字符串(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
本例子的目的在于测试往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(); }
Das obige ist der detaillierte Inhalt vonSo erhalten Sie ein Bild und konvertieren es in eine Binärzeichenfolge in Java (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!