上一篇 java查询信息生成相关证书图片 方法中使用img无法显示图片 修改了一下
<dependency>
<groupId>gui.ava</groupId>
<artifactId>html2image</artifactId>
<version>0.9</version>
</dependency>
@RequestMapping(value = "/xxx", method = RequestMethod.GET)
public void xxx(HttpServletRequest request, HttpServletResponse response) {
// 将图像输出到Servlet输出流中。
ServletOutputStream sos = null;
try {
PageData pd = this.getPageData();
sos = response.getOutputStream();
HtmlImageGenerator imageGenerator = new HtmlImageGenerator();
imageGenerator.setSize(new Dimension(800, 1127));
// String url = new File("F:/test.html").toURI().toString();
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
imageGenerator.loadUrl(basePath+"f/sports-certificate?id="+pd.get("id"));
Thread.sleep(1000);
BufferedImage image = imageGenerator.getBufferedImage();
Thread.sleep(1000);
BufferedImage bufferedImageToWrite = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
bufferedImageToWrite.createGraphics().drawImage(image, 0, 0, Color.WHITE, null);
ImageIO.write(bufferedImageToWrite, "png", sos);
} catch (Exception e) {
e.printStackTrace();
}
}
页面中使用到了小程序码 使用官方生成的小程序码尺寸太大 修改了一下图片尺寸
//创建项目后 生成小程序二维码图片
final WxMaService wxService = getWxMaService();
String filePath=request.getServletContext().getRealPath("/assets")+"/download/erweima";
File file=wxService.getQrcodeService().createWxaCode("pages/project/project?projectId"+pd.get("id"),filePath);
PageData erweima=new PageData();
erweima.put("erweima","assets/download/erweima/"+file.getName());
//修改图片分辨率
InputStream is = new FileInputStream(new File(filePath+"/"+file.getName()));
OutputStream os = new FileOutputStream(new File(filePath+"/100-"+file.getName()));
ImgTest.resizeImage(is, os, 120, "png");
erweima.put("erweima2","assets/download/erweima/100-"+file.getName());
erweima.put("id",pd.get("id"));
//更新保存二维码图片
tProjectService.addAndUpdate(erweima);
ImgTest 网上找的方法
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.imageio.ImageIO;
public class ImgTest {
private Image img;
private final static int WIDTH = 147;
private final static int HEIGHT = 136;
/**
* 改变图片的大小到宽为size,然后高随着宽等比例变化
* @param is 上传的图片的输入流
* @param os 改变了图片的大小后,把图片的流输出到目标OutputStream
* @param size 新图片的宽
* @param format 新图片的格式
* @throws IOException
*/
public static OutputStream resizeImage(InputStream is, OutputStream os, int size, String format) throws IOException {
BufferedImage prevImage = ImageIO.read(is);
double width = prevImage.getWidth();
double height = prevImage.getHeight();
double percent = size/width;
int newWidth = (int)(width * percent);
int newHeight = (int)(height * percent);
BufferedImage image = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_BGR);
Graphics graphics = image.createGraphics();
graphics.drawImage(prevImage, 0, 0, newWidth, newHeight, null);
ImageIO.write(image, format, os);
os.flush();
is.close();
os.close();
// ByteArrayOutputStream b = (ByteArrayOutputStream) os;
return os;
}
public static void main(String[] args) {
try {
InputStream is = new FileInputStream(new File("E:\\wlj\\ideaspace\\charity\\code\\charity_do\\src\\main\\webapp\\assets/download/erweima/3b9e6d2b-1d65-4456-8ba2-eb980ccf77b11060793005911564008.jpg"));
OutputStream os = new FileOutputStream(new File("E:\\wlj\\ideaspace\\charity\\code\\charity_do\\src\\main\\webapp\\assets/download/erweima/3b9e6d2b-1d65-4456-8ba2-eb980ccf77b110607930059115640083.jpg"));
resizeImage(is, os, 100, "png");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}