因为最近在做二维码生成方面的东西所以去网上找了很多博客看, 但是在实际操作中遇到一些问题
FileInputStream is = new FileInputStream(new File(imgUrl));
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int ch;
while ((ch = is.read(buffer)) != -1) {
bytestream.write(buffer,0,ch);
}
byte[] data = bytestream.toByteArray();
bytestream.close();
byte[] bytes = Bytes.qrcode(null, 300, 300,data);
imgUrl是经过阿里云处理的图片
这是处理后的图片的路径 报的错是这样的运行起来是第一行报的错,也就是
报的错是这样的
因为我看的博客上面都是处理的本地图片,所以我想问一下在像这样经过处理后的图片怎么获取转换成字符数组,主要是怎么获取到这张图片
遇到了同样的问题,在CSDN看到了,希望阿里云团队能够给出正确、标准的答案~请查看
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在阿里云上处理图片后,通常您会通过一个URL来访问这个已经处理过的图片资源,而不是直接在本地文件系统中访问。因此,当您需要读取这样的远程图片并转换为字节数组时,应该使用网络请求来获取图片的二进制数据,而不是使用FileInputStream
。
这里是一个使用Java的java.net.URL
和java.io.InputStream
来从URL读取图片并转换为字节数组的例子:
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.IOException;
import java.net.URL;
import java.net.HttpURLConnection;
public class ImageDownloader {
public static byte[] getImageBytesFromUrl(String imageUrl) throws IOException {
URL url = new URL(imageUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new IOException("Failed to connect. Response code: " + connection.getResponseCode());
}
InputStream inputStream = connection.getInputStream();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
inputStream.close();
connection.disconnect();
return outputStream.toByteArray();
}
public static void main(String[] args) {
try {
String imgUrl = "http://your-aliyun-image-url.com"; // 替换为您的阿里云图片处理后的URL
byte[] imageData = getImageBytesFromUrl(imgUrl);
// 然后您可以使用这些字节数据生成二维码等操作
// byte[] bytes = Bytes.qrcode(null, 300, 300, imageData);
} catch (IOException e) {
e.printStackTrace();
}
}
}
这段代码首先创建一个URL对象指向您的图片URL,然后打开一个HTTP连接去获取该资源。之后,它读取输入流中的内容到输出流中,并最终将输出流转为字节数组。这样,您就可以用得到的字节数组进行下一步的操作,比如生成二维码。
请确保替换imgUrl
变量的值为您实际的阿里云图片处理后的URL地址,并且注意处理可能出现的网络异常或HTTP错误码。