从 URL 获取图像 (Java)

2022-09-01 15:28:17

我正在尝试阅读下图

enter image description here

但它显示了IIOException。

代码如下:

Image image = null;
URL url = new URL("http://bks6.books.google.ca/books?id=5VTBuvfZDyoC&printsec=frontcover&img=1& zoom=5&edge=curl&source=gbs_api");
image = ImageIO.read(url);
jXImageView1.setImage(image); 

答案 1

这段代码对我来说工作得很好。

 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.URL;

public class SaveImageFromUrl {

public static void main(String[] args) throws Exception {
    String imageUrl = "http://www.avajava.com/images/avajavalogo.jpg";
    String destinationFile = "image.jpg";

    saveImage(imageUrl, destinationFile);
}

public static void saveImage(String imageUrl, String destinationFile) throws IOException {
    URL url = new URL(imageUrl);
    InputStream is = url.openStream();
    OutputStream os = new FileOutputStream(destinationFile);

    byte[] b = new byte[2048];
    int length;

    while ((length = is.read(b)) != -1) {
        os.write(b, 0, length);
    }

    is.close();
    os.close();
}

}

答案 2

您收到(错误请求)错误,因为您的 URL 中有 。如果修复它(在参数之前),则会收到错误(未经授权)。也许您需要一些HTTP标头来将您的下载标识为已识别的浏览器(使用“User-Agent”标头)或其他身份验证参数。HTTP 400spacezoomHTTP 401

对于 User-Agent 示例,请使用 ImageIO.read(InputStream) 和连接输入流:

URLConnection connection = url.openConnection();
connection.setRequestProperty("User-Agent", "xxxxxx");

使用任何需要的xxxxxx