From 80c24d7c8d9f3fa84fbb5759a6921fdd300ea5eb Mon Sep 17 00:00:00 2001
From: whyclj <1525436766@qq.com>
Date: 星期六, 29 六月 2019 11:41:51 +0800
Subject: [PATCH] 修改导出图片时的宽高比例

---
 sensor/src/com/fgkj/servlets/EchartPictureDowloadServlet.java |   27 ++++++++++++++++++++++++---
 1 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/sensor/src/com/fgkj/servlets/EchartPictureDowloadServlet.java b/sensor/src/com/fgkj/servlets/EchartPictureDowloadServlet.java
index c6a2f6e..982fed7 100644
--- a/sensor/src/com/fgkj/servlets/EchartPictureDowloadServlet.java
+++ b/sensor/src/com/fgkj/servlets/EchartPictureDowloadServlet.java
@@ -1,6 +1,9 @@
 package com.fgkj.servlets;
 
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
@@ -9,6 +12,7 @@
 import java.util.Date;
 import java.util.List;
 
+import javax.imageio.ImageIO;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
@@ -109,12 +113,27 @@
 	private void ExprotReportPicData(HSSFWorkbook wb, HttpServletRequest req,
 			HttpServletResponse resp,String[] picName,String[] picSource) {
 		HSSFSheet sheet1 = wb.createSheet("鍥剧墖鏁版嵁");
-		
+		double[] picPX = new double[picSource.length];
 		bytes = new ArrayList<byte[]>();
 		//灏嗗浘鐗囨暟鎹浆鎹㈡垚瀛楄妭鏁扮粍
+		BASE64Decoder base64 = new BASE64Decoder();
+		//Base64瑙g爜  
+		byte[] b;
+		BufferedImage src = null;
 		for(int i = 0 ;i<picSource.length;i++ ){
 			try {
-				bytes.add(new BASE64Decoder().decodeBuffer(picSource[i].split(",")[1]));
+				bytes.add(base64.decodeBuffer(picSource[i].split(",")[1]));
+				b = base64.decodeBuffer(picSource[i].split(",")[1]);
+				for (int k = 0; k < b.length; ++k) {  
+					if (b[k] < 0) {// 璋冩暣寮傚父鏁版嵁  
+						b[k] += 256;  
+					}  
+				}  
+				InputStream buffin = new ByteArrayInputStream(b);
+				src = ImageIO.read(buffin);
+				int widthYuan = src.getWidth(); // 寰楀埌婧愬浘瀹�
+		        int heightYuan = src.getHeight(); // 寰楀埌婧愬浘闀�
+				picPX[i] = (double)widthYuan/heightYuan;
 			} catch (IOException e) {
 				e.printStackTrace();
 			}
@@ -127,7 +146,8 @@
 				sheet1.createRow(rownum);
 				sheet1.getRow(rownum).createCell(0).setCellValue(i>=picName.length?"":picName[i]);
 				rownum++;
-				HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 512, 255,(short) 0, rownum, (short) 10, 25 + rownum-1);
+				
+				HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 512, 255,(short) 0, rownum, (short) Math.ceil(10*picPX[i]), 25 + rownum-1);
 				anchor.setAnchorType(3);
 				patriarch.createPicture(anchor,wb.addPicture(bytes.get(i),HSSFWorkbook.PICTURE_TYPE_PNG));
 				rownum+=26;
@@ -575,4 +595,5 @@
 	public static double formartDouble(double b , int places){
 		return new   BigDecimal(b).setScale(places,   BigDecimal.ROUND_HALF_UP).doubleValue();  
 	}
+	
 }

--
Gitblit v1.9.1