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