JAVA操作图片/合成/电子盖章等

JAVA操作图片/合成/电子盖章等

 /**
     *
     * @param mainFile
     * @param file1
     * @param f 透明度 最大为1
     * @param response
     * @return
     * @throws IOException
     * @throws InterruptedException
     */
    @ApiOperation(value = "图片合成", notes = "图片合成")
    @PostMapping(value = "phonto", consumes = "multipart/*", headers = "content-type=multipart/form-data")
    public String  upload(@RequestPart("file") MultipartFile mainFile, @RequestPart("file2") MultipartFile file1, @RequestParam("f") Float f, HttpServletResponse response) throws IOException, InterruptedException {
        String tempath = null;
        try {
           Image src1 = ImageIO.read(mainFile.getInputStream());
           Image src2 = ImageIO.read(file1.getInputStream());

            int widthPdf = src1.getWidth(null);
            int heighPdf = src1.getHeight(null);

            int widthYz = src2.getWidth(null);
            int heightYz = src2.getHeight(null);

            BufferedImage thumbImage = new BufferedImage(widthPdf, heighPdf, BufferedImage.TYPE_INT_RGB);
            Graphics2D g = thumbImage.createGraphics();
            //主图片大小以及位置
            g.drawImage(src1.getScaledInstance(widthPdf, heighPdf, Image.SCALE_SMOOTH), 0, 0, null);
            //设置透明度 最大为1
            g.setComposite( AlphaComposite.getInstance(AlphaComposite.SRC_OVER, f==0 ?0:f));
          //设置第二张图片的大小以及在第一张上面的位置坐标
            g.drawImage(src2.getScaledInstance(widthYz, heightYz, Image.SCALE_SMOOTH), 0, 0, null);


             tempath = "D:\\temp\\" + "0.jpg"; //合成图片
            String formatName = tempath.substring(tempath.lastIndexOf(".") + 1);
            ImageIO.write(thumbImage,  formatName , new File(tempath));
            log.info("tempath:::" + tempath);

            //浏览器直接打开图片文件
            String [] commands = {

                    "cmd.exe" , "/c", "start" , "\"DummyTitle\"", "\"" + tempath + "\""

            };

            Process p = Runtime.getRuntime().exec(commands);

            p.waitFor();


        } catch (IOException e) {
            e.printStackTrace();
        } finally {

        }
        return tempath;

    }

测试

请添加图片描述
请添加图片描述
在这里插入图片描述
实际效果:

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

满头黑发到中年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值