NutzCN Logo
问答 关于获取网络图片InputStream 的问题
发布于 2567天前 作者 哎呦哥哥 2800 次浏览 复制 上一个帖子 下一个帖子
标签:

最近在做从图片中读取身份证信息。
使用阿里的接口,印刷文字识别_身份证识别,有需要的可以看看

https://market.aliyun.com/products/57124001/cmapi010401.html?spm=5176.8243888.554823.2.wXf26h#sku=yuncode440100000

其中参数需要 "base64_image_string(#括号内为描述,不需上传,图片以base64编码的string)"。

以上是介绍,
紧接着从把本地的图片做测试没有问题,代码片段:

InputStream in = new FileInputStream("d:/1.jpg");
data = new byte[in.available()];
in.read(data);

//对字节数组Base64编码
sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
//返回Base64编码过的字节数组字符串
return encoder.encode(data);

但实际上 不会从本地拿图片,要从网络上获取图片,获取到的InputStream却和以本地获取的方式不一样,没有明白是为什么

      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
      conn.setReadTimeout(5000);
      conn.setConnectTimeout(5000);
      conn.setRequestMethod("GET");
      
      
      if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
        InputStream inputStream = conn.getInputStream();
        return inputStream; //和这种方式获取的in 不一样 InputStream in = new FileInputStream("d:/1.jpg");

      }
7 回复

把网络获取的内容写到一个文件去,算一下md5,顺便用图片浏览器看看内容

@wendal

根据这个 HttpURLConnection.getInputStream(); 获取到的in,把它保存本地是正常的

而且我不是很希望把它临时存在本地

算md5是做什么呢?不是很了解

@wendal
根据这个 HttpURLConnection.getInputStream(); 获取到的in,把它保存本地是正常的,能够正常浏览,而且文件大小和本地的那个也一样

这个语句是不能确保数据读完整的,尤其是网络环境

data = new byte[in.available()];
in.read(data);

Streams类有相关帮助方法

@wendal

您所指的 Streams类 是不是jdk中的?

org.nutz.lang.Streams.readBytes(InputStream)

添加回复
请先登陆
回到顶部