0

要求された Web サイトから画像を抽出して、フォルダーに保存しようとしています。唯一の問題は、画像を取得している Web サイトに複数の画像形式があることです。したがって、画像の拡張子は png、jpg、または gif のいずれかになります。これらすべてを保存する必要がありますが、1 つだけではなく複数の形式を抽出するようプログラムに指示する方法がわかりません。

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 画像のみが Web サイトから抽出され、フォルダーに保存されています。
テスト目的で、サイトから 1,000 個の画像のみを取得します。

誰かが疑問に思っている場合は、これを使用して「アバター データベース」を作成します。

たくさんの人に感謝します!

4

2 に答える 2

1

複数の画像形式 (拡張子) を反復処理する必要があります。

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");
}
于 2013-05-24T20:58:07.890 に答える
-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)
        }
    }
    ...

すべての画像について、間違った拡張子で失敗しますが、正しいものを取得します

于 2013-05-24T20:58:06.793 に答える