ImageReader 對象通常由特定格式的服務提供者接口(SPI) 類實例化。服務提供者類(例如ImageReaderSpi 的實例)向IIORegistry 註冊,後者使用前者進行格式識別和表示可用格式reader 和writer。
BufferedImage子類描述具有可訪問圖像數據緩衝區的Image。 BufferedImage由圖像數據的ColorModel和Raster組成。 Raster的SampleModel中band的數量和類型必須與ColorModel所要求的數量和類型相匹配,以表示其顏色和alpha分量。所有BufferedImage對象的左上角坐標都為(0,0)。因此,用來構造BufferedImage的任何Raster都必須滿足:minX=0且minY=0。
多的不用說,上代碼,大傢伙兒看看
/** * */package com.b510;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Date;import java.util.Iterator;import javax.imageio.ImageIO;import javax.imageio.ImageReader;import javax.imageio.stream.ImageInputStream;public class ImageUtil {/** * 源圖片路徑名稱如:c:/1.jpg */private String srcpath = "e:/pool.jpg";public ImageUtil() {}public static void main(String[] args) throws Exception {ImageUtil util = new ImageUtil();util.getImageSizeByImageReader(util.getSrcpath());util.getImageSizeByBufferedImage(util.getSrcpath());}/** * 使用ImageReader獲取圖片尺寸* * @param src * 源圖片路徑*/public void getImageSizeByImageReader(String src) {long beginTime = new Date().getTime();File file = new File(src);try {Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("jpg");ImageReader reader = (ImageReader) readers.next();ImageInputStream iis = ImageIO.createImageInputStream(file);reader.setInput(iis, true);System.out.println("width:" + reader.getWidth(0));System.out.println("height:" + reader.getHeight(0));}catch (IOException e) {e.printStackTrace();}long endTime = new Date().getTime();System.out.println("使用[ImageReader]獲取圖片尺寸耗時:[" + (endTime - beginTime)+"]ms");}/** * 使用BufferedImage獲取圖片尺寸* * @param src * 源圖片路徑*/public void getImageSizeByBufferedImage(String src) {long beginTime = new Date().getTime();File file = new File(src);FileInputStream is = null;try {is = new FileInputStream(file);}catch (FileNotFoundException e2) {e2.printStackTrace();}BufferedImage sourceImg = null;try {sourceImg = javax.imageio.ImageIO.read(is);System.out.println("width:" + sourceImg.getWidth());System.out.println("height:" + sourceImg.getHeight());}catch (IOException e1) {e1.printStackTrace();}long endTime = new Date().getTime();System.out.println("使用[BufferedImage]獲取圖片尺寸耗時:[" + (endTime - beginTime)+"]ms");}public String getSrcpath() {return srcpath;}public void setSrcpath(String srcpath) {this.srcpath = srcpath;}}運行結果:
大家可以很容易明白...應該選擇哪個方法了吧...
總結
以上就是本文關於java中ImageReader和BufferedImage獲取圖片尺寸實例的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!