chikuchikugonzalezの雑記帳

趣味とか日記とかメモとか(∩゚д゚)

ビットマップ画像を横スクロールする

M.U.G.E.N関連の画像で一枚の画像を横にスクロールしたものが大量に必要になったので、カッとなって作った。
ひしだまさん → ひしだまのホームページ(Hishidama's HomePage) が作った大型ビットマップクラスを使ってます。

import java.io.*;

import jp.hishidama.bitmap.*;


/**
 * Bitmap画像を横にスクロールする簡易プログラム
 *
 * @author chikuchikgonzalez
 * @version 1.0
 */
public class BitmapScroller {

    public static void main(String[] args) {
        if (args.length < 3) {
            System.err.println("USAGE: BitmapScroller <ファイル> <保存先> <スクロール量> <回数>");
            System.exit(1);
        }

        File file = new File(args[0]);
        File dest = new File(args[1]);
        int amount = Integer.parseInt(args[2]);
        int count = Integer.parseInt(args[3]);

        FileBitmap source = null;
        try {
            source = BitmapFactory.openFileBitmap(file.getParentFile().getAbsolutePath(), file.getName());
            BitmapInfoHeader header = source.getBitmapInfoHeader();
            for (int i = 0; i < count; i++) {
                Bitmap bitmap = BitmapFactory.createMemeryBitmap(header.getWidth(), header.getHeight(), header.getBitCount());

                // 横軸計算
                int offset = i * amount;
                int rightWidth = header.getWidth() - offset;

                // コピー
                bitmap.copy(0, 0, offset, header.getHeight(), source, header.getWidth() - offset, 0);
                bitmap.copy(offset, 0, rightWidth, header.getHeight(), source, 0, 0);

                // 保存
                String fileName = String.format("%05d.bmp", i);
                bitmap.save(dest.getAbsolutePath(), fileName);
            }
        } finally {
            if (source != null) {
                source.close();
            }
        }
    }

}