Java 类org.apache.poi.ss.usermodel.Picture 实例源码

项目:Gargoyle    文件:FxExcelUtil.java   
/**
 * @작성자 : KYJ
 * @작성일 : 2016. 9. 9. 
 * @param sheet
 * @throws Exception
 */
final static void createDefaultLogo(Sheet sheet) throws Exception {
    Workbook workbook = sheet.getWorkbook();
    byte[] defaultLogoImage = getDefaultLogoImage();
    if(defaultLogoImage == null)
        return;
    int pictureIdx = workbook.addPicture(defaultLogoImage, Workbook.PICTURE_TYPE_PNG);

    CreationHelper creationHelper = workbook.getCreationHelper();
    ClientAnchor anchor = creationHelper.createClientAnchor(); //new XSSFClientAnchor();
    //          anchor.setAnchorType(AnchorType.MOVE_DONT_RESIZE);
    Drawing createDrawingPatriarch = sheet.createDrawingPatriarch();
    anchor.setDx1(0);
    anchor.setCol1(0);
    anchor.setRow1(0);

    //#1 테이블 셀의 너비에 의존적이지않게 사이즈조절.
    anchor.setAnchorType(AnchorType.MOVE_DONT_RESIZE);
    Picture createPicture = createDrawingPatriarch.createPicture(anchor, pictureIdx);
    //#2 테이블 셀의 너비에 의존적이지않게 사이즈조절.
    createPicture.resize();
}
项目:excel2javabeans    文件:ExcelImages.java   
public static int computeAxisRowIndex(Sheet sheet, Picture picture) {
    // Calculates the dimensions in EMUs for the anchor of the given picture
    val dimension = ImageUtils.getDimensionFromAnchor(picture);
    val halfHeight = dimension.getHeight() / Units.EMU_PER_POINT / 2;

    val clientAnchor = picture.getClientAnchor();
    val anchorRow1 = clientAnchor.getRow1();
    val fromRowHeight = sheet.getRow(anchorRow1).getHeightInPoints();
    val anchorDy1 = clientAnchor.getDy1();
    val anchorRow2 = clientAnchor.getRow2();
    val y1 = sheet instanceof HSSFSheet
            ? anchorDy1 / 256.0f * fromRowHeight // refer to HSSFClientAnchor.getAnchorHeightInPoints
            : anchorDy1 / Units.EMU_PER_POINT;

    var sumHeight = fromRowHeight - y1;
    if (sumHeight >= halfHeight) return anchorRow1;

    for (var i = anchorRow1 + 1; i < anchorRow2; ++i) {
        sumHeight += sheet.getRow(i).getHeightInPoints();
        if (sumHeight >= halfHeight) return i;
    }

    return anchorRow2;
}
项目:excel2javabeans    文件:ExcelImages.java   
public static int computeAxisColIndex(Sheet sheet, Picture picture) {
    // Calculates the dimensions in EMUs for the anchor of the given picture
    val dimension = ImageUtils.getDimensionFromAnchor(picture); //
    val halfWidth = dimension.getHeight() / Units.EMU_PER_PIXEL / 2;

    val clientAnchor = picture.getClientAnchor();
    val anchorCol1 = clientAnchor.getCol1();
    val anchorCol2 = clientAnchor.getCol2();
    val anchorDx1 = clientAnchor.getDx1();

    val fromColumnWidth = sheet.getColumnWidthInPixels(anchorCol1);
    var sumWidth = fromColumnWidth - anchorDx1 / Units.EMU_PER_PIXEL;
    if (sumWidth >= halfWidth) return anchorCol1;

    for (var i = anchorCol1 + 1; i < anchorCol2; ++i) {
        sumWidth += sheet.getColumnWidthInPixels(i);
        if (sumWidth >= halfWidth) return i;
    }

    return anchorCol2;
}
项目:dataforms    文件:ExcelReport.java   
/**
 * セルに対し画像を設定します。
 * @param c セル。
 * @param value 値。
 * @param p セル位置情報。
 */
private void setImage(final Cell c, final Object value, final CellPosition p) {
    ImageData img = (ImageData) value;
    int cidx = c.getColumnIndex();
    int ridx = c.getRowIndex();
    ClientAnchor anchor = new XSSFClientAnchor();
    anchor.setCol1(cidx);
    anchor.setCol2(cidx + p.getColumns());
    anchor.setRow1(ridx);
    anchor.setRow2(ridx + p.getRows());
    anchor.setDx1(XSSFShape.EMU_PER_PIXEL * p.getDx1());
    anchor.setDy1(XSSFShape.EMU_PER_PIXEL * p.getDy1());
    anchor.setDx2(XSSFShape.EMU_PER_PIXEL * p.getDx2());
    anchor.setDy2(XSSFShape.EMU_PER_PIXEL * p.getDy2());
    anchor.setAnchorType(ClientAnchor.MOVE_AND_RESIZE);
    int imgtype = XSSFWorkbook.PICTURE_TYPE_PNG;
    if (ImageData.CONTENT_TYPE_JPEG.equals(img.getContentType())) {
        imgtype = XSSFWorkbook.PICTURE_TYPE_JPEG;
    } else if (ImageData.CONTENT_TYPE_GIF.equals(img.getContentType())) {
        imgtype = XSSFWorkbook.PICTURE_TYPE_GIF;
    }
    int pidx = this.workbook.addPicture(img.getContents(), imgtype);
    Picture pic = this.drawing.createPicture(anchor, pidx);
    this.resizeImage(c, pic, p);
}
项目:dataforms    文件:ExcelReport.java   
/**
 * 画像サイズの調整。
 * @param c セル。
 * @param pic 画像。
 * @param p セル位置情報。
 */
private void resizeImage(final Cell c, final Picture pic, final CellPosition p) {
    if ("image".equals(p.getAspect())) {
        double w = this.getAnchorWidth(p) - (p.getDx1() - p.getDx2());
        double h = this.getAnchorHeight(p) - (p.getDy1() - p.getDy2());
        Dimension d = pic.getImageDimension();
        log.debug("w,h=" + w + "," + h);
        log.debug("iw,ih=" + d.getWidth() + "," + d.getHeight());
        if (w > h) {
            double cw = w / h;
            double iw = d.getWidth() / d.getHeight();
            pic.resize((iw / cw) * 1.0, 1.0);
        } else {
            double ch = h / w;
            double ih = d.getHeight() / d.getWidth();
            pic.resize(1.0, (ih / ch) * 1.0);
        }
    }
}
项目:PoiExcelExport    文件:ExcelExportService.java   
/**
 * 抽象出图片生成业务代码
 * 
 * @throws IOException
 */
private void extractPicturePortion(String svgString, XSSFWorkbook wb,
        XSSFSheet sheet, int startCol, int endCol, int startRow, int endRow)
        throws IOException {
    // 图片
    if (org.apache.commons.lang3.StringUtils.isNotBlank(svgString)) {
        byte[] safeDataBytes = new BASE64Decoder().decodeBuffer(svgString);
        int pictureIdx = wb.addPicture(safeDataBytes,
                Workbook.PICTURE_TYPE_JPEG);
        CreationHelper helper = wb.getCreationHelper();
        // Create the drawing patriarch. This is the top level container for
        // all shapes.
        Drawing drawing = sheet.createDrawingPatriarch();
        // add a picture shape
        ClientAnchor anchor = helper.createClientAnchor();
        // set top-left corner of the picture,
        // subsequent call of Picture#resize() will operate relative to it
        anchor.setCol1(startCol);
        anchor.setCol2(endCol);
        anchor.setRow1(startRow);
        anchor.setRow2(endRow);
        anchor.setDx1(0);
        anchor.setDy1(0);
        anchor.setDx2(0);
        anchor.setDy2(0);
        anchor.setAnchorType(ClientAnchor.MOVE_DONT_RESIZE);
        Picture pict = drawing.createPicture(anchor, pictureIdx);
        pict.resize(1);
    }
}
项目:PoiExcelExport2.0    文件:ExcelExportService.java   
/**
 * 抽象出图片生成业务代码
 * 
 * @throws IOException
 */
private void extractPicturePortion(String svgString, XSSFWorkbook wb,
        XSSFSheet sheet, int startCol, int endCol, int startRow, int endRow)
        throws IOException {
    // 图片
    if (org.apache.commons.lang3.StringUtils.isNotBlank(svgString)) {
        byte[] safeDataBytes = new BASE64Decoder().decodeBuffer(svgString);
        int pictureIdx = wb.addPicture(safeDataBytes,
                Workbook.PICTURE_TYPE_JPEG);
        CreationHelper helper = wb.getCreationHelper();
        // Create the drawing patriarch. This is the top level container for
        // all shapes.
        Drawing drawing = sheet.createDrawingPatriarch();
        // add a picture shape
        ClientAnchor anchor = helper.createClientAnchor();
        // set top-left corner of the picture,
        // subsequent call of Picture#resize() will operate relative to it
        anchor.setCol1(startCol);
        anchor.setCol2(endCol);
        anchor.setRow1(startRow);
        anchor.setRow2(endRow);
        anchor.setDx1(0);
        anchor.setDy1(0);
        anchor.setDx2(0);
        anchor.setDy2(0);
        anchor.setAnchorType(ClientAnchor.MOVE_DONT_RESIZE);
        Picture pict = drawing.createPicture(anchor, pictureIdx);
        pict.resize(1);
    }
}
项目:swing    文件:Report.java   
protected void addChart(HSSFWorkbook workbook, byte[] chart, String name) {
    int pictureIndex = workbook.addPicture(chart, HSSFWorkbook.PICTURE_TYPE_PNG);
    HSSFSheet sheet = workbook.createSheet(name);
    addTitle(sheet, name, 0);
    Drawing drawing = sheet.createDrawingPatriarch();
    CreationHelper helper = workbook.getCreationHelper();
    ClientAnchor anchor = helper.createClientAnchor();
    anchor.setRow1(1);
    anchor.setCol1(0);
    Picture picture = drawing.createPicture(anchor, pictureIndex);
    picture.resize();
}
项目:Aspose_for_Apache_POI    文件:ApacheAddImage.java   
public static void main(String[] args) throws Exception
{
    String dataPath = "src/featurescomparison/workingwithworkbook/addimages/data/";

    //create a new workbook
    Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();

    //add picture data to this workbook.
    InputStream is = new FileInputStream(dataPath + "aspose.jpg");
    byte[] bytes = IOUtils.toByteArray(is);
    int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
    is.close();

    CreationHelper helper = wb.getCreationHelper();

    //create sheet
    Sheet sheet = wb.createSheet();

    // Create the drawing patriarch.  This is the top level container for all shapes. 
    Drawing drawing = sheet.createDrawingPatriarch();

    //add a picture shape
    ClientAnchor anchor = helper.createClientAnchor();
    //set top-left corner of the picture,
    //subsequent call of Picture#resize() will operate relative to it
    anchor.setCol1(3);
    anchor.setRow1(2);
    Picture pict = drawing.createPicture(anchor, pictureIdx);

    //auto-size picture relative to its top-left corner
    pict.resize();

    //save workbook
    String file = dataPath + "ApacheImage.xls";
    if(wb instanceof XSSFWorkbook) file += "x";
    FileOutputStream fileOut = new FileOutputStream(file);
    wb.write(fileOut);
    fileOut.close();
    System.out.println("Done...");
}
项目:hy.common.report    文件:ImageListener.java   
/**
 * 重置图片大小,设置顶部、左侧边距
 * 
 * @author      ZhengWei(HY)
 * @createDate  2017-10-31
 * @version     v1.0
 *
 * @param i_Picture
 */
protected void resizeMarginLeftTop(Picture i_Picture)
{
    i_Picture.resize();
    i_Picture.getAnchor().setDx1(i_Picture.getAnchor().getDx1() + Help.NVL(this.marginLeft ,0));
    i_Picture.getAnchor().setDx2(i_Picture.getAnchor().getDx2() + Help.NVL(this.marginLeft ,0));
    i_Picture.getAnchor().setDy1(i_Picture.getAnchor().getDy1() + Help.NVL(this.marginTop  ,0));
    i_Picture.getAnchor().setDy2(i_Picture.getAnchor().getDy2() + Help.NVL(this.marginTop  ,0));
}