根据图片绝对地址获取图片格式的Byte数组或者PDF的Byte数组

 获取InputStream流对象方法

public static byte[] getImgByte(String url){
        byte[] obj = null;
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpGet httpGet = new HttpGet(url);
        httpGet.setHeader("Content-type","charset=UTF-8");
        HttpResponse response;
        try{
            response = httpclient.execute(httpGet);
            if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
                HttpEntity entity = response.getEntity();
                InputStream inputStream = entity.getContent();
                obj = HttpclienUtils.readInputStream(inputStream);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return obj;
    }

获取Byte数组对象

public static byte[] readInputStream(InputStream inStream) throws Exception{
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = 0;
        while( (len=inStream.read(buffer)) != -1 ){
            outStream.write(buffer, 0, len);
        }
        inStream.close();
        return outStream.toByteArray();
    }

图片Byte数组转化为PDF的Byte数组

    private byte[] imgByteToPdfByte(byte[] imgObj){
        byte[] pdfByte = null;
        ByteArrayOutputStream fos = new ByteArrayOutputStream();
        Document doc = new Document(PageSize.A4, 0, 0, 0, 0);
        try {
            PdfWriter.getInstance(doc, fos);
        } catch (DocumentException e) {
            logger.error(String.format("创建PdfWriter失败:"),e);
            throw new RuntimeException("创建PdfWriter失败");
        }
        doc.open();
        try {
            addImage(doc, imgObj);
        } catch (Exception e) {
            logger.error(String.format("图片下载或转换失败"),e);
            doc.close();
            throw new RuntimeException("转换图片失败");
        }
        doc.close();
        pdfByte = fos.toByteArray();
        return  pdfByte;
    }

    /**
     * 增加图片
     * @param doc itext pdf Document文档
     * @param bytes 要转的图片流
     * @throws Exception
     */
    private void addImage(Document doc, byte[] bytes) throws Exception {
        Image image = Image.getInstance(bytes);
        image.setAlignment(Image.ALIGN_CENTER);
        image.scalePercent(getPercent(image.getHeight(),image.getWidth()));
        doc.newPage();
        doc.add(image);
    }

    /**
     * A4比例
     * @param h
     * @param w
     * @return
     */
    private int getPercent(float h,float w) {
        float p2 = 0f;
        if(h > w) {
            p2 = PageSize.A4.getHeight() / h * 100;
        } else {
            p2 = PageSize.A4.getWidth() / w * 100;
        }
        return Math.round(p2);
    }

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值