一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java圖片處理之獲取gif圖一幀圖片的兩種方法

Java圖片處理之獲取gif圖一幀圖片的兩種方法

2021-01-27 11:07大大的微笑 Java教程

這篇文章主要給大家介紹了關于Java圖片處理之獲取gif圖一幀圖片的兩種方法,分別是利用Java原生代碼和使用im4java調用ImageMagick來實現,兩種方法都給出來示例代碼供大家參考學習,需要的朋友們下面來一起看看吧。

前言

本文主要給大家介紹了關于Java獲取gif圖一幀圖片的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

一、Java原生代碼實現gif獲取一幀圖片

先看測試代碼:

?
1
2
3
4
5
6
7
8
public static void main(String[] args) {
   /*這兒填寫你存放要縮小圖片的文件夾全地址*/
  String src = "c:/5.gif" ;
  /*這兒填寫你轉化后的圖片存放的文件夾*/
  String tar = "c:/5_frame_2.jpg";
//  獲取GIF圖片一幀圖片
  getGifOneFrame(src, tar, 2);
 }

核心代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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一幀圖片

先看測試代碼

?
1
2
3
4
5
6
7
8
9
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("完成");
}

主要實現:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
  * 獲取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;
 }

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://blog.csdn.net/chwshuang/article/details/64923354

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲色图第一页 | 美女毛片视频 | 福利一区在线观看 | 免费在线观看成年人视频 | 日本视频免费看 | 变态 调教 视频 国产九色 | 国内久久婷婷综合欲色啪 | 亚洲午夜性春猛交xxxx | 日本xxxxx高清免费观看 | 视频一区二区 村上凉子 | 日韩免费毛片视频杨思敏 | 乳环调教| 亚洲女人国产香蕉久久精品 | 日本视频高清 | 99久久精品国产免看国产一区 | 古代双性美人被老糟蹋 | 特级av毛片免费观看 | 美女扒开奶罩让男人吃奶 | 99re精品在线 | 国产精彩对白综合视频 | 日本免费观看95视频网站 | 逼毛片| 国产精品视频自拍 | 99热这里有免费国产精品 | 特黄aa级毛片免费视频播放 | 思思久久精品在热线热 | 免费一级特黄特色大片在线观看 | 久草高清在线 | 国产福利免费看 | 天天做天天爱天天爽综合区 | 久久精品无码一区二区日韩av | 久久久久久久伊人电影 | 久久sese| 好大好硬好紧太深了受不了 | 男人操美女逼视频 | 女主被男主为催奶药h | 99热国产这里只有精品 | 好涨好大我快受不了了视频网 | 国产在线精品一区二区高清不卡 | 美女模特被c免费视频 | 精品日韩欧美一区二区三区 |