JAVA *** 作图片合成电子盖章等

JAVA *** 作图片合成电子盖章等,第1张

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;

    }

测试




实际效果:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/920215.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存