图片比例好麻烦,按照图片比例
高大于宽的
高宽一致的
高小于宽的
三个比例
不是特别丑还是挺丑的其实,嗨,凑合下记录一个思路
sheet.setColumnWidth(i,30256);列宽
nrow.setHeight((short) (30256));行高
URL url = new URL(imgUrl+ “!wm”);
BufferedImage read = ImageIO.read(url);
int width = read.getWidth();
int height = read.getHeight();
Integer gcd = gcd(height, width);
Integer heightRatio = height / gcd;
Integer widthRatio= width / gcd;
int a=10000*10,b=10000*10,c=-10000*10,d=-10000*10;
if(heightRatio > widthRatio){
a = 10000*15;
b = 10000*10+(10000*60);
c = -10000*15;
d = -10000*10-(10000*60);
}else if (heightRatio == widthRatio){
a = 10000*15;
b = 10000*10+(10000*120);
c = -10000*15;
d = -10000*10-(10000*120);
}else if(heightRatio < widthRatio){
a = 10000*15;
b = 10000*10+(10000*180);
c = -10000*15;
d = -10000*10-(10000*180);
}
//下载图片
// ByteArrayOutputStream output = downloadImg(imgUrl+"!wm");
ByteArrayOutputStream output = new ByteArrayOutputStream();
ImageIO.write( read, “jpg”, output );
//imgUrlIndex图片位置 图片搜索在行数rowNum
XSSFClientAnchor anchor = new XSSFClientAnchor(a, b, c, d,
(short) imgUrlIndex, rowNum, (short) imgUrlIndex+1, rowNum+1);
XSSFDrawing patriarch = sheet.createDrawingPatriarch();
// 插入图片
patriarch.createPicture(anchor, wb.addPicture(output.toByteArray(), XSSFWorkbook.PICTURE_TYPE_JPEG));
------------------------------------------------最大公约数算出图片比例--------------------------------------------------
private Integer gcd(int height , int width) {
if(width ==0 ){
return height;
}else{
return gcd(width, height % width);
}
}