スナックelve 本店

バツイチ40代女の日記です

3コマ漫画分割ツール

うぅ、id:narwhalにコメントもらったほうが全然検証できてないけど新しい話しちゃうぜw
ワイの画像フォルダ(./img)のうち高さ1500の画像を3コマ漫画とし、高さ500ずつに分けて別のフォルダ(./testImg)に保存。
高さが1500じゃないやつはそのままコピー
3分割は1_ 2_ 3_を頭につける。
ほぼ【Java】プログラムで画像ファイルの任意の座標でトリミングする方法 - (O+P)utのパクリです(;´Д`)

import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;

public class testMain {
    public static void main(String args[]) {
        // Fileクラスのオブジェクトを生成する
        File dir = new File("./img/");

        // listFilesメソッドを使用して一覧を取得する
        File[] list = dir.listFiles();
        System.out.println(list.length);
        for (File f : list) {
            try {
                BufferedImage read = javax.imageio.ImageIO.read(f);
                int w = read.getWidth();
                int h = read.getHeight();
                if (h != 1500) {
                    //高さ1500以外はそのままコピー
                    BufferedImage write1 = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
                    for (int y = 0; y < h; y++) {
                        for (int x = 0; x < w; x++) {
                            write1.setRGB(x, y, read.getRGB(x, y));
                        }
                    }
                    File f1 = new File("./testImg/1_" + f.getName());
                    ImageIO.write(write1, "png", f1);
                    continue;
                }
                BufferedImage write1 = new BufferedImage(w, 500, BufferedImage.TYPE_INT_RGB);
                BufferedImage write2 = new BufferedImage(w, 500, BufferedImage.TYPE_INT_RGB);
                BufferedImage write3 = new BufferedImage(w, 500, BufferedImage.TYPE_INT_RGB);
                for (int y = 0; y < h; y++) {
                    for (int x = 0; x < w; x++) {
                        if (y >= 0 && y < 500) {
                            write1.setRGB(x, y, read.getRGB(x, y));
                        } else if (y >= 500 && y < 1000) {
                            write2.setRGB(x, y - 500, read.getRGB(x, y));
                        } else if (y >= 1000) {
                            write3.setRGB(x, y - 1000, read.getRGB(x, y));
                        }
                    }
                }
                File f1 = new File("./testImg/1_" + f.getName());
                File f2 = new File("./testImg/2_" + f.getName());
                File f3 = new File("./testImg/3_" + f.getName());
                ImageIO.write(write1, "png", f1);
                ImageIO.write(write2, "png", f2);
                ImageIO.write(write3, "png", f3);
            } catch (IOException e) {

                System.out.println("IOExceptionが発生");
                return;
            }
        }
    }
}

参考
【Java】プログラムで画像ファイルの任意の座標でトリミングする方法 - (O+P)ut
JavaのforEachメソッドの使い方!拡張for文との違いや注意点を解説【初心者向け】 | プログラミングを学ぶならトレノキャンプ(TRAINOCAMP)
File (Java Platform SE 8)
【JAVA】拡張子を除いて、ファイル名のみを取得する - Qiita
JavaのFileオブジェクトのgetName関数について現役エンジニアが解説【初心者向け】 | TechAcademyマガジン
あるディレクトリにある複数のファイルを読み込みたい
JavaのforEachメソッドについて紹介|forEachメソッドの使用方法を理解しよう | Javaコラム
【Java入門】FileのlistFilesでファイルを検索して一覧を取得 | 侍エンジニアブログ