有網絡時可以用這個測試
public static void main(String[] args) {		try {			//http://avatar.csdn.net/3/1/7/1_QQ_27292113.jpg?1488183229974  是頭像地址			//獲取圖片的流//	        BufferedImage url = getUrlByBufferedImage("http://avatar.csdn.net/3/1/7/1_qq_27292113.jpg?1488183229974");				        Image src = ImageIO.read(new File("C:/Users/Administrator/Desktop/Imag.png"));	        BufferedImage url = (BufferedImage) src;	        //處理圖片將其壓縮成正方形的小圖	        BufferedImage  convertImage= scaleByPercentage(url, 100,100);	        //裁剪成圓形 (傳入的圖像必須是正方形的 才會 圓形 如果是長方形的比例則會變成橢圓的)	        convertImage = convertCircular(url);	        //生成的圖片位置	    	String imagePath= "C:/Users/Administrator/Desktop/Imag.png";	        ImageIO.write(convertImage, imagePath.substring(imagePath.lastIndexOf(".") + 1), new File(imagePath)); 	        System.out.PRintln("ok");		} catch (Exception e) {			e.printStackTrace();		}	}沒有有聯網用這個測試	public static void main(String[] args) {		try {			//圖片的本地地址	        Image src = ImageIO.read(new File("C:/Users/Administrator/Desktop/Imag.png"));	        BufferedImage url = (BufferedImage) src;	        //處理圖片將其壓縮成正方形的小圖	        BufferedImage  convertImage= scaleByPercentage(url, 100,100);	        //裁剪成圓形 (傳入的圖像必須是正方形的 才會 圓形 如果是長方形的比例則會變成橢圓的)	        convertImage = convertCircular(url);	        //生成的圖片位置	    	String imagePath= "C:/Users/Administrator/Desktop/Imag.png";	        ImageIO.write(convertImage, imagePath.substring(imagePath.lastIndexOf(".") + 1), new File(imagePath)); 	        System.out.println("ok");		} catch (Exception e) {			e.printStackTrace();		}	}以下是調用的方法	    /**     * 縮小Image,此方法返回源圖像按給定寬度、高度限制下縮放后的圖像     * @param inputImage     * @param maxWidth:壓縮后寬度     * @param maxHeight:壓縮后高度     * @throws java.io.IOException     * return      */    public static BufferedImage scaleByPercentage(BufferedImage inputImage, int newWidth, int newHeight) throws Exception {        //獲取原始圖像透明度類型        int type = inputImage.getColorModel().getTransparency();        int width = inputImage.getWidth();        int height = inputImage.getHeight();        //開啟抗鋸齒        RenderingHints renderingHints=new RenderingHints(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);        //使用高質量壓縮        renderingHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);        BufferedImage img = new BufferedImage(newWidth, newHeight, type);        Graphics2D graphics2d =img.createGraphics();        graphics2d.setRenderingHints(renderingHints);                graphics2d.drawImage(inputImage, 0, 0, newWidth, newHeight, 0, 0, width, height, null);        graphics2d.dispose();        return img;    }	        /**     * 通過網絡獲取圖片     * @param url     * @return     */    public static BufferedImage getUrlByBufferedImage(String url){        try {			URL urlObj = new URL(url);  			HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();  			// 連接超時  			conn.setDoInput(true);  			conn.setDoOutput(true);  			conn.setConnectTimeout(25000);  			// 讀取超時 --服務器響應比較慢,增大時間  			conn.setReadTimeout(25000);  			conn.setRequestMethod("GET");  			conn.addRequestProperty("Accept-Language", "zh-cn");  			conn.addRequestProperty("Content-type", "image/jpeg");  			conn.addRequestProperty( "User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)");  			conn.connect();            BufferedImage bufImg = ImageIO.read(conn.getInputStream());              conn.disconnect();            return bufImg;		} catch (MalformedURLException e) {			e.printStackTrace();		} catch (ProtocolException e) {			e.printStackTrace();		} catch (IOException e) {			e.printStackTrace();		}         return null;    }        /**     * 傳入的圖像必須是正方形的 才會 圓形  如果是長方形的比例則會變成橢圓的     * @param url 用戶頭像地址       * @return     * @throws IOException     */    public static BufferedImage convertCircular(BufferedImage bi1) throws IOException{//    	BufferedImage bi1 = ImageIO.read(new File(url));    	//這種是黑色底的//    	BufferedImage bi2 = new BufferedImage(bi1.getWidth(),bi1.getHeight(),BufferedImage.TYPE_INT_RGB);     	    	//透明底的圖片    	BufferedImage bi2 = new BufferedImage(bi1.getWidth(),bi1.getHeight(),BufferedImage.TYPE_4BYTE_ABGR);     	Ellipse2D.Double shape = new Ellipse2D.Double(0,0,bi1.getWidth(),bi1.getHeight());    	Graphics2D g2 = bi2.createGraphics();    	g2.setClip(shape);     	// 使用 setRenderingHint 設置抗鋸齒    	g2.drawImage(bi1,0,0,null);     	//設置顏色    	g2.setBackground(Color.green);    	g2.dispose();    	return bi2;    }    	引入的類import java.awt.Color;import java.awt.Graphics2D;import java.awt.Image;import java.awt.RenderingHints;import java.awt.geom.Ellipse2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.ProtocolException;import java.net.URL;執行結果對比

新聞熱點
疑難解答