利用字節流將生成的圖片輸出到js頁面,實現動態生成圖片

本段代碼是生成微信二維碼圖片,並利用字節流將其輸出至js頁面端.也適用於其他想要獲得生成動態圖片的需求.可結合實際情況進行取捨.代碼如下:

@RequestMapping(value="/loan/showQRcode")
	public void showQRcode(HttpServletRequest request, Model model, HttpServletResponse response,
			@RequestParam (value="rechargeMoney",required=true) Double rechargeMoney,
			@RequestParam (value="rechargeNo",required=true) String rechargeNo,
			@RequestParam (value="rechargeDesc",required=true) String rechargeDesc) throws WriterException, IOException {
		
		//準備調用pay工程微信支付接口的請求參數
		int total_fee = (int) (rechargeMoney * 100);//將單位轉換爲分
		String out_trade_no = rechargeNo;
		String body = rechargeDesc;
		
		//發送請求 -》 獲取返回信息
		Map<String,Object> paramMap = new ConcurrentHashMap<String,Object>();
		paramMap.put("total_fee", total_fee);
		paramMap.put("out_trade_no", out_trade_no);
		paramMap.put("body", body);
		
		String result = HttpClinentUtils.doPost(config.getP2p_wxpay_pay_url(), paramMap);
		
		//解析返回的內容
		//將返回的json格式字符串轉換爲json對象
		JSONObject jsonObject = JSON.parseObject(result);
		
		//獲取return_code
		String return_code = jsonObject.getString("return_code");
		
		if("SUCCESS".equals(return_code)) {
			
			String result_code = jsonObject.getString("result_code");
			
			if("SUCCESS".equals(result_code)) {
				String code_url = jsonObject.getString("code_url");
				
				int width = 200;//寬度
				int height = 200;//高度
				
				Map<EncodeHintType,Object> hints = new HashMap<EncodeHintType,Object>();
				hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
				
				//生成矩陣
				BitMatrix bitMatrix = new MultiFormatWriter().encode(code_url, BarcodeFormat.QR_CODE, width, height, hints);
				
				//字節數組輸出流
				ByteArrayOutputStream imageOut = new ByteArrayOutputStream();
				MatrixToImageWriter.writeToStream(bitMatrix, "jpg", imageOut);
				
				//字節數組輸入流
				ByteArrayInputStream imageIn = new ByteArrayInputStream(imageOut.toByteArray());
				BufferedImage bImage = ImageIO.read(imageIn);
				OutputStream out = response.getOutputStream();
				
				ImageIO.write(bImage, "jpg", out);
				
				bImage.flush();
				out.flush();
				out.close();
				
			}
		}
		
		//獲取到code_url,生成二維碼
		
	}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章