开发者社区 问答 正文

在进行二维码生成的时候遇到的问题

因为最近在做二维码生成方面的东西所以去网上找了很多博客看, 但是在实际操作中遇到一些问题

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看到了,希望阿里云团队能够给出正确、标准的答案~请查看

展开
收起
西门小刚刚9630297551 2020-05-23 21:13:37 780 分享 版权
阿里云 AI 助理回答

在阿里云上处理图片后,通常您会通过一个URL来访问这个已经处理过的图片资源,而不是直接在本地文件系统中访问。因此,当您需要读取这样的远程图片并转换为字节数组时,应该使用网络请求来获取图片的二进制数据,而不是使用FileInputStream

这里是一个使用Java的java.net.URLjava.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错误码。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: