java 图片转换二进制字符串_java如何获得图片同时转为二进制字符串(代码实例)...

本篇文章给大家带来的内容是关于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 blist=new ArrayList();

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

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();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值