Java图片处理 - gif图获取一帧图片
2017-03-22 20:15
447 查看
Java图片处理 - gif图获取一帧图片
Java原生代码实现gif获取一帧图片
先看测试代码:public static void main(String[] args) { /*这儿填写你存放要缩小图片的文件夹全地址*/ String src = "c:/5.gif" ; /*这儿填写你转化后的图片存放的文件夹*/ String tar = "c:/5_frame_2.jpg"; // 获取GIF图片一帧图片 getGifOneFrame(src, tar, 2); }
核心代码:
FileImageInputStream in = null; FileImageOutputStream out = null; try { in = new FileImageInputStream(new File(src)); ImageReaderSpi readerSpi = new GIFImageReaderSpi(); GIFImageReader gifReader = (GIFImageReader) readerSpi.createReaderInstance(); gifReader.setInput(in); int num = gifReader.getNumImages(true); // 要取的帧数要小于总帧数 if (num > frame) { ImageWriterSpi writerSpi = new GIFImageWriterSpi(); GIFImageWriter writer = (GIFImageWriter) writerSpi.createWriterInstance(); for (int i = 0; i < num; i++) { if (i == frame) { File newfile = new File(target); out = new FileImageOutputStream(newfile); writer.setOutput(out); // 读取读取帧的图片 writer.write(gifReader.read(i)); return true; } } }
主要是创建
GIFImageReader对象,然后获取要取的那一帧图片
使用im4java调用ImageMagick获取gif一帧图片
先看测试代码public static void main(String[] args) throws Exception { String src = "c:/test2.gif"; String target = "c:/test2_frame_1.jpg"; getGifOneFrame(src, target, 1); System.out.println("完成"); }
主要实现:
/** * 获取GIF图片一帧图片 - 同步执行 * @param src 源图片路径 * @param target 目标图片路径 * @param frame 获取第几帧 * @throws Exception */ public static boolean getGifOneFrame(String src, String target, int frame) throws Exception { if(!src.endsWith(".gif")){ return false; } createDirectory(target); IMOperation op = new IMOperation(); op.addImage(src + "["+frame+"]"); op.addImage(target); ConvertCmd cmd = (ConvertCmd) getImageCommand("convert"); cmd.setAsyncMode(false); cmd.run(op); return true; }
大家还可以参考我专栏中的其他文章:
(1)Java图片处理 - 安装ImageMagick库使用convert命令
(2)Java图片处理 - 创建工具类
(3)Java图片处理 - 复制
(4)Java图片处理 - 缩放图片
(5)Java图片处理 - gif图获取一帧图片
相关文章推荐
- Java图片处理之获取gif图一帧图片的两种方法
- NeuQuant.java源码(处理GIF图片)
- AnimatedGifEncoder.java源码(处理GIF图片)
- delphi GDI+ 获取GIF图片的每一帧 转为bmp图片
- Java-图片处理 Gif转Jpg
- C#图片处理:获取GIF 动画图片中的各个帧
- java gif图片保存处理逻辑
- Java-图片处理 Gif转Jpg
- GifDecoder.java源码(处理GIF图片)
- java图片处理——多张图片合成一张Gif图片并播放或Gif拆分成多张图片
- java图片处理——多张图片合成一张Gif图片并播放或Gif拆分成多张图片
- java图片处理——多张图片合成一张Gif图片并播放或Gif拆分成多张图片
- 分解gif图片中的每一帧进行处理
- java获取jpg图片信息-有损JPG图片处理
- java 获取图片属性、破损图片处理、写入日志、连接数据库
- java图片压缩处理 支持gif
- C#获取Gif图片每一帧的时间
- LZWEncoder.java源码(处理GIF图片)
- java 图片上传的处理,获取图片大小,宽高。
- AnimatedGifEncoder.java源码(处理GIF图片)