从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); }
}