【问题标题】:Extracting images from URL with multiple extensions从具有多个扩展名的 URL 中提取图像
【发布时间】:2013-05-20 13:17:45
【问题描述】:

我正在尝试从请求的网站中提取图像,然后将其保存到文件夹中。唯一的问题是我从中提取图像的网站有多种图像格式。所以图像的扩展名可以是 png、jpg 或 gif。我需要保存所有这些,但我不知道如何告诉我的程序提取多种格式而不仅仅是一种..

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main { 
    public static void main( String[] args )
    {
        int avatarnum = 1;
        String extension = null;
        BufferedImage image = null;
        extension = "jpg";

        while(avatarnum <= 1000){
            try {
                URL url = new URL("http://forum.blockland.us/avatarUpload/avatar_"+avatarnum+"."+extension);
                image = ImageIO.read(url);

                try{
                    ImageIO.write(image, extension,new File("C:\\test\\"+avatarnum+"."+extension));
                    System.out.println("Write successful");
                    avatarnum ++;
                } catch(Exception e){
                    System.out.println("Printing stacktrace");
                    e.printStackTrace();
                }
                avatarnum ++;

            } catch (IOException e) {
                System.out.println("File not found! " + avatarnum);
                System.out.println("Adding one to variable and retrying..");
                avatarnum ++;
            }
        }
        System.out.println("Done");
    }
}

目前,仅从网站中提取 jpg 图像并将其保存到文件夹中。
出于测试目的,它只会从站点中提取 1,000 张图像。

如果有人想知道,我将使用它来制作“头像数据库”。

非常感谢大家!

【问题讨论】:

    标签: java image url


    【解决方案1】:

    使用包含所有有效扩展名的数组

    String[] extensions = {"jpg", "png", "gif" };
    

    并在检索 URL 时遍历所有这些

    try {
        for (String extension: extensions){
            try {
                URL url = new URL("http://forum.blockland.us/avatarUpload/avatar_"+avatarnum+"."+extension);
                image = ImageIO.read(url);
            } catch (Exception e){
                 //Wrong extension (or other kind of error)
            }
        }
        ...
    

    对于每张图片,它都会因错误的扩展名而失败,但会检索正确的扩展名

    【讨论】:

      【解决方案2】:

      您需要迭代多种图像格式(扩展):

      public static void main(String[] args) {
          int avatarnum = 1;
          BufferedImage image = null;
      
          String[] extensions = { "jpg", "png", "gif", "bmp" };
      
          while (avatarnum <= 1000) {
              for (String extension : extensions) {
                  try {
                      URL url = new URL("http://forum.blockland.us/avatarUpload/avatar_" + avatarnum + "." + extension);
                      image = ImageIO.read(url);
      
                      try {
                          ImageIO.write(image, extension, new File("C:\\test\\" + avatarnum + "." + extension));
                          System.out.println("Write successful");
      
                      } catch (Exception e) {
                          System.out.println("Error on save the image");
                      }
      
                  } catch (IOException e) {
                      System.out.println("File not found! " + avatarnum + "." + extension);
      
                  }
              }
              avatarnum++;
          }
          System.out.println("Done");
      }
      

      【讨论】:

        猜你喜欢
        • 2018-06-18
        • 2011-06-15
        • 1970-01-01
        • 2012-08-12
        • 2021-02-02
        • 1970-01-01
        • 2020-07-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多