要控制图片大小,可以使用picture.resize()方法来调整图片大小。您可以在创建图片后调用此方法来设置所需的大小。

要将多张图片并列在单元格中,您可以使用XSSFClientAnchor类的不同参数来调整图片的位置和大小。在循环中,您可以根据需要调整XSSFClientAnchor对象的参数来设置每个图像的位置和大小。

以下是示例代码,展示了如何控制图片大小、将多张图片并列在单元格中:

for(cellNum=0;cellNum<dataKeys.length;cellNum++)
{
    String value = temp.optString(dataKeys[cellNum]);
    System.out.println('value============' + value);

    if(dataKeys[cellNum].equals('images'))
    {
        JSONArray images = temp.optJSONArray('images');
        if(images != null)
        {
            for(int j=0; j<images.length(); j++)
            {
                String imageUrl = images.optString(j);
                URL imageUrlObj = new URL(imageUrl);
                InputStream imageStream = imageUrlObj.openStream();
                byte[] byteArray = IOUtils.toByteArray(imageStream);
                int pictureIndex = wb.addPicture(byteArray, Workbook.PICTURE_TYPE_JPEG);
                XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) cellNum, i+rowcount, (short) (cellNum+1), i+rowcount+1);
                XSSFPicture picture = patriarch.createPicture(anchor, pictureIndex);
                picture.resize(); // 调整图片大小

                // 调整图片位置和大小
                int pictureWidth = 100; // 设置图片宽度(单位:像素)
                int pictureHeight = 100; // 设置图片高度(单位:像素)
                anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);
                anchor.setCol1(cellNum);
                anchor.setRow1(i+rowcount);
                anchor.setCol2(cellNum+1);
                anchor.setRow2(i+rowcount+1);
                anchor.setDx1(0);
                anchor.setDy1(0);
                anchor.setDx2(pictureWidth * XSSFShape.EMU_PER_PIXEL);
                anchor.setDy2(pictureHeight * XSSFShape.EMU_PER_PIXEL);
            }
        }
    }
    else
    {
        CellUtil.createCell(r, cellNum, value);
    }
}

请注意,上述代码中的pictureWidthpictureHeight变量定义了图片的宽度和高度(以像素为单位)。您可以根据需要调整这些值来设置图片的大小。

Java Excel 技巧:控制图片大小和多图并列

原文地址: https://www.cveoy.top/t/topic/qDgJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录