从URL获取图像(Java)

我正在尝试阅读以下图片

在此处输入图像描述

但它显示了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); 

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

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

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

使用xxxxxx所需的任何内容

这段代码对我来说很好。

  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://sofzh.miximages.com/java/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(); } } 

试试这个:

 //urlPath = address of your picture on internet URL url = new URL("urlPath"); BufferedImage c = ImageIO.read(url); ImageIcon image = new ImageIcon(c); jXImageView1.setImage(image); 

直接调用URL以获取图像可能涉及主要的安全问题。 您需要确保您有足够的权限来访问该资源。 但是,您可以使用ByteOutputStream来读取图像文件。 这是一个例子(它只是一个例子,您需要根据您的要求进行必要的更改。)

 ByteArrayOutputStream bis = new ByteArrayOutputStream(); InputStream is = null; try { is = url.openStream (); byte[] bytebuff = new byte[4096]; int n; while ( (n = is.read(bytebuff)) > 0 ) { bis.write(bytebuff, 0, n); } } 

试试这个:

 class ImageComponent extends JComponent { private final BufferedImage img; public ImageComponent(URL url) throws IOException { img = ImageIO.read(url); setPreferredSize(new Dimension(img.getWidth(), img.getHeight())); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(img, 0, 0, img.getWidth(), img.getHeight(), this); } public static void main(String[] args) throws Exception { final URL lenna = new URL("http://bks6.books.google.ca/books?id=5VTBuvfZDyoC&printsec=frontcover&img=1& zoom=5&edge=curl&source=gbs_api"); final ImageComponent image = new ImageComponent(lenna); JFrame frame = new JFrame("Test"); frame.add(new JScrollPane(image)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 300); frame.setVisible(true); } 

}