第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用Java獲取圖像的高度和寬度?

如何使用Java獲取圖像的高度和寬度?

牛魔王的故事 2019-10-16 14:45:58
除了使用ImageIO.read來獲取圖像的高度和寬度外,還有其他方法嗎?因為我遇到了鎖定線程的問題。at com.sun.medialib.codec.jpeg.Decoder.njpeg_decode(Native Method)      at com.sun.medialib.codec.jpeg.Decoder.decode(Decoder.java:87)      at com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader.decode(CLibJPEGImageReader.java:73)      - locked <0xd96fb668> (a com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader)      at com.sun.media.imageioimpl.plugins.clib.CLibImageReader.getImage(CLibImageReader.java:320)     - locked <0xd96fb668> (a com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader)      at com.sun.media.imageioimpl.plugins.clib.CLibImageReader.read(CLibImageReader.java:384)    - locked <0xd96fb668> (a com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReader)      at javax.imageio.ImageIO.read(ImageIO.java:1400)      at javax.imageio.ImageIO.read(ImageIO.java:1322)此錯誤僅在Sun應(yīng)用服務(wù)器上發(fā)生,因此我懷疑這是Sun錯誤。
查看完整描述

3 回答

?
楊魅力

TA貢獻1811條經(jīng)驗 獲得超6個贊

這是@Kay對偉大帖子的重寫,它引發(fā)IOException并提供了較早的退出:


/**

 * Gets image dimensions for given file 

 * @param imgFile image file

 * @return dimensions of image

 * @throws IOException if the file is not a known image

 */

public static Dimension getImageDimension(File imgFile) throws IOException {

  int pos = imgFile.getName().lastIndexOf(".");

  if (pos == -1)

    throw new IOException("No extension for file: " + imgFile.getAbsolutePath());

  String suffix = imgFile.getName().substring(pos + 1);

  Iterator<ImageReader> iter = ImageIO.getImageReadersBySuffix(suffix);

  while(iter.hasNext()) {

    ImageReader reader = iter.next();

    try {

      ImageInputStream stream = new FileImageInputStream(imgFile);

      reader.setInput(stream);

      int width = reader.getWidth(reader.getMinIndex());

      int height = reader.getHeight(reader.getMinIndex());

      return new Dimension(width, height);

    } catch (IOException e) {

      log.warn("Error reading: " + imgFile.getAbsolutePath(), e);

    } finally {

      reader.dispose();

    }

  }


  throw new IOException("Not a known image file: " + imgFile.getAbsolutePath());

}

我想我的代表不夠高,因此我的意見不值得作為回應(yīng)。


查看完整回答
反對 回復(fù) 2019-10-16
?
絕地?zé)o雙

TA貢獻1946條經(jīng)驗 獲得超4個贊

我發(fā)現(xiàn)了另一種讀取圖像大小的方法(更通用)。您可以將ImageIO類與ImageReaders一起使用。這是示例代碼:


private Dimension getImageDim(final String path) {

    Dimension result = null;

    String suffix = this.getFileSuffix(path);

    Iterator<ImageReader> iter = ImageIO.getImageReadersBySuffix(suffix);

    if (iter.hasNext()) {

        ImageReader reader = iter.next();

        try {

            ImageInputStream stream = new FileImageInputStream(new File(path));

            reader.setInput(stream);

            int width = reader.getWidth(reader.getMinIndex());

            int height = reader.getHeight(reader.getMinIndex());

            result = new Dimension(width, height);

        } catch (IOException e) {

            log(e.getMessage());

        } finally {

            reader.dispose();

        }

    } else {

        log("No reader found for given format: " + suffix));

    }

    return result;

}

請注意,getFileSuffix是返回路徑擴展名而不包含“。”的方法。因此例如:png,jpg等。示例實現(xiàn)為:


private String getFileSuffix(final String path) {

    String result = null;

    if (path != null) {

        result = "";

        if (path.lastIndexOf('.') != -1) {

            result = path.substring(path.lastIndexOf('.'));

            if (result.startsWith(".")) {

                result = result.substring(1);

            }

        }

    }

    return result;

}

該解決方案非??欤驗閮H從文件讀取圖像大小,而不是從整個圖像讀取。我對其進行了測試,無法與ImageIO.read的性能進行比較。我希望有人會覺得有用。


查看完整回答
反對 回復(fù) 2019-10-16
  • 3 回答
  • 0 關(guān)注
  • 1350 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號