java圖片處理


Java中進行圖像I/O(即讀圖片和寫圖片,不涉及到復雜圖像處理)一個類包含靜態方便定位方法 ImageReaders和 ImageWriters,並進行簡單的編碼和解碼。

  • 特別說明 imageio 文檔說明支持bmp 轉換的,但是實際上比不支持的,網絡上找了很多,有的人說開imagebuffer緩存但是實際上沒有作用, 使用opencv轉換還是有問題,不知道是java的問題還是本身就不支持,這個問題
    困擾了我24小時,最后被迫無奈只能換成tiff格式.

  • 基本代碼

/*File f1 = new File("Z:\\java\\1.png");
		BufferedImage image = ImageIO.read(f1);
		File f2 = new File("Z:\\java\\2.tiff");
		ImageIO.write(image, "png", f2);*///對應輸入圖片的格式
  • 參數化代碼

	@Test //獲取輸入輸出圖片格式
	public void f1() {
		String readFormats[] = ImageIO.getReaderFormatNames();
		String writeFormats[] = ImageIO.getWriterFormatNames();
		System.out.println(  Arrays.asList(readFormats));
		System.out.println( Arrays.asList(writeFormats));
	}
	
	@Test
	public void f2() {
		Iterator<ImageReader> iterator = ImageIO.getImageReadersByFormatName("png");
	}
	 /** 
     * 對圖片裁剪,並把裁剪新圖片保存 
     * @param srcPath 讀取源圖片路徑
     * @param toPath    寫入圖片路徑
     * @param x 剪切起始點x坐標
     * @param y 剪切起始點y坐標
     * @param width 剪切寬度
     * @param height     剪切高度
     * @param readImageFormat  讀取圖片格式
     * @param writeImageFormat 寫入圖片格式
     * @throws IOException
     */
    public void cropImage(String srcPath,String toPath,
            int x,int y,int width,int height,
            String readImageFormat,String writeImageFormat) throws IOException{   
        FileInputStream fis = null ;
        ImageInputStream iis =null ;
        try{   
            //讀取圖片文件
            fis = new FileInputStream(srcPath); 
            Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName(readImageFormat); 
            ImageReader reader = (ImageReader) it.next(); 
            //獲取圖片流 
            iis = ImageIO.createImageInputStream(fis);  
            reader.setInput(iis,true) ;
            ImageReadParam param = reader.getDefaultReadParam(); 
            //定義一個矩形
            Rectangle rect = new Rectangle(x, y, width, height); 
            //提供一個 BufferedImage,將其用作解碼像素數據的目標。 
            param.setSourceRegion(rect);
            BufferedImage bi = reader.read(0,param);                
            //保存新圖片 
            ImageIO.write(bi, writeImageFormat, new File(toPath));     
        }finally{
            if(fis!=null)
                fis.close();       
            if(iis!=null)
               iis.close(); 
        } 
    }
	


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM