<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          java實現(xiàn)gif圖片剪裁

          共 2677字,需瀏覽 6分鐘

           ·

          2021-06-28 04:52

          最近負責組內(nèi)的圖片上傳相關(guān)的業(yè)務,有了一個新的需求,大概要做的功能是要實現(xiàn)gif圖片有裁剪的功能,一想到咋自個對圖片這種數(shù)據(jù)結(jié)構(gòu)不是很熟,所以找開源項目吧。終于找到了gif4j這樣一個項目。于是乎作者立馬將它fock了一下,然后改造成了自己的項目。最后的裁剪效果如下,基本達到了要求了。
          原圖

          裁剪

          壓縮


          新增的maven依賴:
                  <dependency>            <groupId>javax.media</groupId>            <artifactId>jai-core</artifactId>            <version>1.1.3</version>        </dependency>
          <dependency> <groupId>com.sun.media</groupId> <artifactId>jai-codec</artifactId> <version>1.1.3</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-io/commons-io --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.10.0</version> </dependency>
          在功能實現(xiàn)之后,作者將自己的修改新建了一個包。如圖:
          測試代碼如下:
          /** * @param args * @throws Exception */public static void main(String[] args) throws Exception {    try {        // 起始坐標,剪切大小        int x = 0;        int y = 0;        int width = 100;        int height = 100;        // 參考圖像大小        int clientWidth = 300;        int clientHeight = 250;

          File file = new File("C:\\Users\\tianjingle\\Desktop\\0.gif"); BufferedImage image = ImageIO.read(file); double destWidth = image.getWidth(); double destHeight = image.getHeight();
          if(destWidth < width || destHeight < height) { throw new Exception("源圖大小小于截取圖片大小!"); }
          double widthRatio = destWidth / clientWidth; double heightRatio = destHeight / clientHeight;
          x = Double.valueOf(x * widthRatio).intValue(); y = Double.valueOf(y * heightRatio).intValue(); width = Double.valueOf(width * widthRatio).intValue(); height = Double.valueOf(height * heightRatio).intValue();
          System.out.println("裁剪大小 x:" + x + ",y:" + y + ",width:" + width + ",height:" + height); float ratio = ((float) image.getWidth()) / image.getWidth(); String formatName = "gif"; String pathSuffix = "." + formatName; String pathPrefix = "C:\\Users\\tianjingle\\Desktop\\"; String targetPath = pathPrefix + System.currentTimeMillis() + pathSuffix; byte[] target = ImageUtils.cutImage(new FileInputStream(file.getPath()), "gif", x , y , width, height,ratio); FileUtils.writeByteArrayToFile(new File(targetPath),target); } catch (IOException e) { e.printStackTrace(); }}
          詳細情況見代碼:https://github.com/tianjingle/gif4j


          早~


          瀏覽 63
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲va高清 | 能操网站 | 青娱乐在线伊人网 | 国产极品人妖ts91热爆 | 淫妻大神 |