利用Jmagick(ImageMagick)來取得圖片的長寬

一般Java要取得圖片的長寬size大部份的人,也是最簡單的方法,

就是使用java.awt.image.BufferedImage來取得,不過有時JVM在釋放記憶體來不及時,很容易會出Exception

這時候可以利用Jmagick來取得,它會呼叫外部的ImageMagick 的dll來取得長寬,

以下就是原始碼:

import magick.ImageInfo;
import magick.MagickException;
import magick.MagickImage;
import java.awt.Dimension;
public static int[] getImageWH(String source) {
    if (System.getProperty("jmagick.systemclassloader") == null) {
      System.setProperty("jmagick.systemclassloader", "no");
    }
    MagickImage image = null;
    int[] wh = new int[] { -1, -1 };
    try {

      ImageInfo info = new ImageInfo(source);
      image = new MagickImage(info);
      Dimension imageDim = image.getDimension();
      System.out.println(source + "圖片長寬:" + imageDim.width + ","
          + imageDim.height);
      wh[0] = imageDim.width;
      wh[1] = imageDim.height;
      image.destroyImages();
      image = null;

    } catch (MagickException e) {
      System.out.println("取得圖檔大小失敗:" + source + ":" + wh[0] + "," + wh[1]);
      // ORG_URL_PATH
    } finally {
      if (image != null)
        image.destroyImages();
      image = null;
    }
    return wh;
  }

其它資料

JMagick-Java open source free影像壓縮| 聰明的生活2

發表迴響