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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一级特黄在线播放 | 91se在线 | 2020韩国三级理论在线观看 | 欧美性白人顶级hd | 男人懂得网站 | 99热久久国产精品这里 | 男人在女人下面狂躁 | 国产一线天 | 国产欧美精品一区二区三区–老狼 | 亚洲欧美日韩国产精品一区 | 91中文在线 | 91国在线观看| 欧美老人与小伙子性生交 | 日本mature乱子视频 | 午夜欧美福利视频 | 国产午夜亚洲精品一区网站 | 国产小视频网站 | bestialityvideo另类| 日韩香蕉视频 | 满溢游泳池免费 | 亚洲成a人不卡在线观看 | 青青青青青操 | 铁牛tv 在线观看 | 男人把大ji巴放进男人免费视频 | 无码一区二区三区视频 | 午夜无码国产理论在线 | 欧美破处女视频 | 热久久99精品这里有精品 | 成人a级特黄毛片 | 91夜夜人人揉人人捏人人添 | futa百合高肉全h | 精品无码一区二区三区中文字幕 | 色综合久久中文字幕综合网 | 荡女淫春2未删减版 | 亚洲欧美午夜 | 男女男精品网站 | 交换朋友夫妇3中文字幕 | 91私密保健女子养生spa | 国内精品久久久久久久 | 50度灰破解版v5.7.0 | 艾秋麻豆果冻剧传媒在线播放 |