1. 程式人生 > >java根據座標擷取圖片(轉載)

java根據座標擷取圖片(轉載)

package com.json.test;

	import java.awt.Rectangle;  
	import java.awt.image.BufferedImage;  
	import java.io.File;  
	import java.io.FileInputStream;  
	import java.io.IOException;  
	import java.util.Iterator;  

	import javax.imageio.ImageIO;  
	import javax.imageio.ImageReadParam;  
	import javax.imageio.ImageReader;  
	import javax.imageio.stream.ImageInputStream;

	public class OperateImage {


	// ===源圖片路徑名稱如:c:\1.jpg    
	    private String srcpath ;  
	          
	    // ===剪下圖片存放路徑名稱.如:c:\2.jpg   
	    private String subpath ;  
	     
	    // ===剪下點x座標   
	    private   int x ;  
	     
	    private   int y ;      
	       
	    // ===剪下點寬度   
	    private   int width ;  
	      
	    private   int height ;  
	     
	    public OperateImage() {  
	             
	   }     
	    public OperateImage( int x, int y, int width, int height) {  
	         this .x = x ;  
	         this .y = y ;  
	         this .width = width ;     
	         this .height = height ;  
	   }   
	     
	/**   
	    * 對圖片裁剪,並把裁剪完蛋新圖片儲存 。
	*/   
	    public void cut()throws IOException {   
	          
	       FileInputStream is =   null ;  
	       ImageInputStream iis = null ;  
	      
	        try {     
	            // 讀取圖片檔案   
	           is =new FileInputStream(srcpath);   
	             
	           /*  
	            * 返回包含所有當前已註冊 ImageReader 的 Iterator,這些 ImageReader  
	            * 聲稱能夠解碼指定格式。 引數:formatName - 包含非正式格式名稱 .
	            *(例如 "jpeg" 或 "tiff")等 。  
	        */   
	           Iterator < ImageReader > it=ImageIO.getImageReadersByFormatName("jpg");    
	           ImageReader reader = it.next();   
	            // 獲取圖片流    
	           iis = ImageIO.createImageInputStream(is);  
	                
	           /*   
	            * <p>iis:讀取源.true:只向前搜尋 </p>.將它標記為 ‘只向前搜尋’。
	            * 此設定意味著包含在輸入源中的影象將只按順序讀取,可能允許 reader
	            * 避免快取包含與以前已經讀取的影象關聯的資料的那些輸入部分。
	        */   
	           reader.setInput(iis, true ) ;  
	             
	           /*   
	            * <p>描述如何對流進行解碼的類<p>.用於指定如何在輸入時從 Java Image I/O  
	            * 框架的上下文中的流轉換一幅影象或一組影象。用於特定影象格式的外掛
	            * 將從其 ImageReader 實現的 getDefaultReadParam 方法中返回  
	            * ImageReadParam 的例項。   
	       */   
	           ImageReadParam param = reader.getDefaultReadParam();   
	              
	           /*  
	            * 圖片裁剪區域。Rectangle 指定了座標空間中的一個區域,通過 Rectangle 物件
	            * 的左上頂點的座標(x,y)、寬度和高度可以定義這個區域。  
	       */    
	           Rectangle rect =   new Rectangle(x, y, width, height);   
	             
	               
	            // 提供一個 BufferedImage,將其用作解碼畫素資料的目標。    
	           param.setSourceRegion(rect);   

	           /*  
	            * 使用所提供的 ImageReadParam 讀取通過索引 imageIndex 指定的物件,並將
	            * 它作為一個完整的 BufferedImage 返回。
	             */   
	           BufferedImage bi=reader.read(0,param);                  
	       
	            // 儲存新圖片    
	           ImageIO.write(bi,"jpg",new File(subpath));       
	       } finally {  
	            if (is != null )  
	              is.close() ;         
	            if (iis != null )  
	              iis.close();    
	       }    
	         
	          
	      
	   }   

	    public   int getHeight() {  
	        return height;  
	   }   

	    public   void setHeight( int height) {  
	        this .height = height;  
	   }   

	    public String getSrcpath() {  
	        return srcpath;  
	   }   

	    public   void setSrcpath(String srcpath) {  
	        this .srcpath = srcpath;  
	   }   

	    public String getSubpath() {  
	        return subpath;  
	   }   

	    public   void setSubpath(String subpath) {  
	        this .subpath = subpath;  
	   }   

	    public   int getWidth() {  
	        return width;  
	   }   

	    public   void setWidth( int width) {  
	        this .width = width;  
	   }   

	    public   int getX() {  
	        return x;  
	   }   

	    public   void setX( int x)   {  
	        this .x = x;  
	   }   

	    public   int getY()   {  
	        return y;  
	   }   

	    public   void setY( int y) {  
	        this .y = y;  
	   }    
	public static void main(String[] args) {
		OperateImage operateImage = new OperateImage(20, 20, 100, 100);
		operateImage.srcpath = "C:/test/1.jpg";
		operateImage.subpath = "C:/test/2.jpg";
		try {
			operateImage.cut();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
}

相關推薦

java根據座標擷取圖片轉載

package com.json.test; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.Fil

MyEclipse&Maven項目管理教程:創建Java Maven依賴項目轉載

file 索引 ons art 依賴性 創建 ucc 安裝文件 添加   本教程介紹了如何通過MyEclipse Web項目,或者其他任何Maven項目來創建一個通用的Java/Maven項目。這些步驟包括基礎的創建和使用Maven依賴。您將學習到:   創建一個Maven

Kotlin VS Java:基本語法差異轉載

允許 接收 point this view 學習 替換 同時 ons 5月18號,goole宣布Kotlin成為官方支持的開發語言以來,Kotlin語言社區,公眾號,qq群等全面轟炸,本文是一篇譯文,來自國外的一個用戶,將給大家介紹,基礎語法部分Kotlin和java之間的

深入理解java註解的實現原理轉載

轉自:深入理解java註解的實現原理 今天將從以下4個方面來系統的學習一下java註解 什麼是註解 註解的用途 註解使用演示 註解的實現原理 1,什麼是註解 註解也叫元資料,例如我們常見的@Override和@Deprecated,註解是J

layui-圖片上傳,可使用選擇圖片->上傳圖片,預覽圖片,刪除圖片轉載

原文地址:https://gitee.com/AMortal/codes/qt8m6zk30u1g4evr95jhx13 <!DOCTYPE html> <html> <head> <meta

JAVA代理與動態代理轉載

關於Java中的動態代理,我們首先需要了解的是一種常用的設計模式--代理模式,而對於代理,根據建立代理類的時間點,又可以分為靜態代理和動態代理。  一、代理模式 代理模式是常用的java設計模式,他的特徵是代理類與委託類有同樣的介面,代理類主要負責為委託類預處理訊

java中static的理解轉載

使用 static 修飾符修飾的屬性(成員變數)、常量和成員方法稱為靜態變數、常量和方法,它們統稱為 靜態成員,歸整個類所有,不依賴於類的特定例項,被類的所有例項共享。只要這個類被載入, Java 虛擬機器就可以根據類名在執行時資料區的方法區內找到它們。 呼叫靜態

10 道 Java 泛型面試題轉載

本文轉載自騰訊雲社群 Java中的泛型是什麼 ? 使用泛型的好處是什麼? 這是在各種Java泛型面試中,一開場你就會被問到的問題中的一個,主要集中在初級和中級面試中。那些擁有Java1.4或更早版本的開發背景的人都知道,在集合中儲存物件並在使用前進行型別轉換

java中生成靜態html轉載

1.前言 為了能深入淺出的理解這個框架的由來,我們首先來了解一下JSP解析器將我們寫的JSP程式碼轉換成的JAVA檔案的內容。 下面是一個JSP檔案test.jsp 經過TOMCAT轉換出的JAVA檔案test$jsp.java內容如下: package org.apache.jsp; import java

JAVA基礎知識精華總結轉載

1、物件的初始化 (1)非靜態物件的初始化      在建立物件時,物件所在類的所有資料成員會首先進行初始化。    基本型別:int型,初始化為0。   如果為物件:這些物件會按順序初始化。 ※在所有類成員初始化完成之後,才呼叫本類的構造方法建立物件。    構造方法的作用就是初始化。   (2)靜態物件的

根據座標拖動簡單

新的一年第一篇文章也是寫拖動,這次程式碼比較簡單, 主要是思路是根據座標軸判斷排序   CSS程式碼: *{ margin: 0; box-sizing:border-box; } .ClearFloat:after{ content: "020";

JAVA中如何設定圖片圖示自適應Jlable等元件的大小

一、問題: 一個程式,元件上設定某個圖片作為圖示,因為的label(應該說是元件)已經設定了固定大小, 所以再開啟一些大圖片時,超過元件大小的部分沒顯示出來,而小圖片又沒填充完整個元件 二、解決這個

java vm 引數及設定轉載

一、設定JVM記憶體設定 1. 設定JVM記憶體的引數有四個: -Xmx   Java Heap最大值,預設值為實體記憶體的1/4,最佳設值應該視實體記憶體大小及計算機內其他記憶體開銷而定; -Xms   Java Heap初始值,Server端JVM最好將-Xms和-Xmx設為相同值,開發測試機J

初探Java企業級開源框架OSGi轉載

第一次接觸OSGi 是2006年看見的一則網上新聞,該新聞中提到BMW 汽車的通訊-娛樂(infotainment)系統採用了OSGi 架構,這套系統主要用來控制汽車上的音箱、燈光、導航和通訊等裝置,整個系統由1000多個模組組成,啟動時間卻只需要3.5秒鐘,這對於一個基於J

Java驗證碼資料精粹轉載

驗證碼實際上就是隨機選擇一些字元以圖片的形式展現在頁面上,如果進行提交操作的同時需要將圖片上的字元同時提交,如果提交的字元與伺服器 session儲存的不同,則認為提交資訊無效。為了避免自動程式分析解析圖片,通常會在圖片上隨機生成一些干擾線或者將字元進行扭曲,增加自動識

Java的LockSupport.park()實現分析轉載

兩個 這也 his access 需要 tracking orm return 指令 LockSupport類是Java6(JSR166-JUC)引入的一個類,提供了基本的線程同步原語。LockSupport實際上是調用了Unsafe類裏的函數,歸結到Unsafe裏,只有

轉載Java程序員應當知道的10個面向對象設計原則

程序 rep 開放 不同 單一職責原則 世界 企業項目 們的 ive 面向對象設計原則是OOPS編程的核心, 但我見過的大多數Java程序員熱心於像Singleton (單例) 、 Decorator(裝飾器)、Observer(觀察者) 等設計模式,而沒有把足夠多的註意力

轉載深入理解java的接口和抽象類

final類 轉載 如何實現 靜態 參考 種類型 tar 發現 是否 本文轉自地址:http://www.cnblogs.com/dolphin0520/p/3811437.html 作者:海子 出處:http://www.cnblogs.com/dolphin0520/

CSS百分比padding實現比例固定圖片自適應布局 轉載

缺失 com 我們 展現 auto ie6 iphone7 恰恰 備案 一、CSS百分比padding都是相對寬度計算的 在默認的水平文檔流方向下,CSS margin和padding屬性的垂直方向的百分比值都是相對於寬度計算的,這個和top, bottom等屬性的百分比

HTML5 file API加canvas實現圖片前端JS壓縮並上傳 轉載

www. 手機 回調 pre lan 瀏覽器中 rdp 效果 二進制 一、圖片上傳前端壓縮的現實意義 對於大尺寸圖片的上傳,在前端進行壓縮除了省流量外,最大的意義是極大的提高了用戶體驗。 這種體驗包括兩方面: 由於上傳圖片尺寸比較小,因此上傳速度會比較快,交互會更