JavaでGIFアニメの抜き出し
GIFアニメの文字列をOCRで抜き出すために分割処理が必要になった。
以下、そのコード。画像を扱った経験が少なかったので少し手間取った。
close処理はどうなるのか未確認。
package project1; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.ImageWriter; public class GifTest { public GifTest() { } public static void main(String[] args) { // http://codezine.jp/article/detail/497?p=2 // パス類 String inputDir = "D:\\work\\java_gif\\img\\"; String outputDir = inputDir; String prefix = "sample"; String extName = "gif"; ImageReader imageReader = null; ImageWriter imageWriter = null; try { Iterator it = ImageIO.getImageReadersByFormatName(extName); // 読み込み imageReader = it.hasNext() ? (ImageReader)it.next() : null; imageReader.setInput(ImageIO.createImageInputStream(new File(inputDir, prefix + "." + extName))); // 書き込み Iterator itr = ImageIO.getImageWritersByFormatName(extName); imageWriter = itr.hasNext() ? (ImageWriter)itr.next() : null; int count = imageReader.getNumImages(true); for (int i = 0; i < count; i++) { BufferedImage tmpImage = imageReader.read(i); imageWriter.setOutput(ImageIO.createImageOutputStream(new File(outputDir, prefix + i + "." + extName))); imageWriter.write(tmpImage); imageWriter.dispose(); } imageReader.dispose(); } catch (IOException e) { e.printStackTrace(); } finally{ } } }