Swing/ExtractFramesFromAnimatedGif のバックアップソース(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- バックアップ を表示
- Swing/ExtractFramesFromAnimatedGif へ行く。
- 1 (2013-03-18 (月) 02:26:09)
- 2 (2013-03-18 (月) 03:34:16)
- 3 (2013-03-18 (月) 15:23:31)
- 4 (2013-03-19 (火) 16:12:16)
- 5 (2013-09-06 (金) 11:30:05)
- 6 (2014-03-18 (火) 18:52:56)
- 7 (2014-11-25 (火) 03:03:31)
- 8 (2014-12-19 (金) 14:21:32)
- 9 (2016-03-01 (火) 14:00:49)
- 10 (2016-05-31 (火) 14:34:27)
- 11 (2016-06-16 (木) 01:04:23)
- 12 (2017-09-19 (火) 06:30:59)
- 13 (2018-10-15 (月) 13:21:16)
- 14 (2020-10-16 (金) 19:15:47)
- 15 (2022-08-17 (水) 14:29:17)
TITLE:AnimatedGifから画像を抽出する #navi(../) #tags(ImageIO, ImageReader, BufferedImage, Animation) RIGHT:Posted by &author(aterai); at 2013-03-18 *AnimatedGifから画像を抽出する [#t5869758] ``AnimatedGif``から各フレームの画像を抽出します。主に[https://forums.oracle.com/forums/thread.jspa?messageID=5386516 OTN Discussion Forums : Reading gif animation frame rates and such?]の回答を参考に作成しています。 -&jnlp; -&jar; -&zip; //#screenshot #ref(https://lh4.googleusercontent.com/-_xu1jNmYJe0/UUX3d_PzwKI/AAAAAAAABoA/cyS5ABVZdkM/s800/ExtractFramesFromAnimatedGif.png) **サンプルコード [#q1a56a3f] #code(link){{ ImageReader reader = null; Iterator<ImageReader> readers = ImageIO.getImageReaders(imageStream); while(readers.hasNext()) { reader = readers.next(); String metaFormat = reader.getOriginatingProvider().getNativeImageMetadataFormatName(); if("gif".equalsIgnoreCase(reader.getFormatName()) && !"javax_imageio_gif_image_1.0".equals(metaFormat)) { continue; }else{ break; } } if(reader == null) { throw new IOException("Can not read image format!"); } boolean isGif = reader.getFormatName().equalsIgnoreCase("gif"); reader.setInput(imageStream, false, !isGif); ArrayList<BufferedImage> list = new ArrayList<BufferedImage>(); for(int i=0;i<reader.getNumImages(true);i++) { IIOImage frame = reader.readAll(i, null); list.add((BufferedImage)frame.getRenderedImage()); } reader.dispose(); }} **解説 [#z2a7a3c4] 上記のサンプルでは、``ImageReader``に``AnimatedGif``ファイルを読み込ませて、``IIOImage#getRenderedImage()``で各フレームの``BufferedImage``を取得しています。 - 注: -- 背景色を無視している -- ``try-with-resources``を使っているので、``JDK 1.7.0``以上が必要 **参考リンク [#gf7bd402] - [https://forums.oracle.com/forums/thread.jspa?messageID=5386516 OTN Discussion Forums : Reading gif animation frame rates and such?] - [[JPEGファイルのコメントを取り出す>Swing/IIOMetadata]] **コメント [#hade8703] #comment