美文网首页
Java图片画框,算法标记

Java图片画框,算法标记

作者: 蒋仁勇 | 来源:发表于2022-12-05 10:27 被阅读0次
       /**
         * base64 编码转换为 BufferedImage
         *
         * @param base64 不带前缀以9j/开头的
         * @return BufferedImage对象
         */
        public static BufferedImage base64ToBufferedImage(String base64) {
            Base64.Decoder decoder = Base64.getDecoder();
            try {
                byte[] bytes = decoder.decode(base64);
                ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
                return ImageIO.read(byteArrayInputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    
       /**
         * 添加边框
         *
         * @param image   base64ToBufferedImage转换出来的image对象
         * @param x 原点x坐标(原点一般在左上角)
         * @param y 原点y坐标(原点一般在左上角)
         * @param  width 框宽
         * @param height 框高
         * @return
         */
       public static BufferedImage addBorders(BufferedImage image, int x, int y, int width, int height) {
            if (image == null) {
                return null;
            }
            Graphics2D g2 = image.createGraphics();
            //画笔颜色
            g2.setColor(Color.RED);
            //设置画笔粗细
            BasicStroke stokeLine = new BasicStroke(8.0f);
            g2.setStroke(stokeLine);
            //矩形框(原点x坐标,原点y坐标,矩形的长,矩形的宽)
            g2.drawRect(x, y, width, height);
            g2.dispose();
            return image;
        }
    
       /**
         * BufferedImage转换为 MultipartFile
         *
         * @param image BufferedImage对象
         * @return MultipartFile对象
         */
    public static MultipartFile imageToMultipartFile(BufferedImage image) {
            try {
                //BufferedImage 转化为 ByteArrayOutputStream
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                ImageIO.write(image, "jpg", out);
                //ByteArrayOutputStream 转化为 byte[]
                byte[] imageByte = out.toByteArray();
                //将 byte[] 转为自定义的 MultipartFile对象(实现MultipartFile接口)
                return new CustomMultipartFile(imageByte, "/9j");
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    
    public static void main(String[] args) {
            // base64转为image
            BufferedImage image = ImageUtils.base64ToBufferedImage("9j........");
            // 画框
            ImageUtils.addBorders(image, 11, 12, 45, 72);
            // image 转为 MultipartFile
            MultipartFile multipartFile = ImageUtils.imageToMultipartFile(image);
           //画框后的图片保存到Minio中
            String url = MinioUtil.uploadFileMinio(multipartFile, "fileFormat");
        }
    

    相关文章

      网友评论

          本文标题:Java图片画框,算法标记

          本文链接:https://www.haomeiwen.com/subject/sigbfdtx.html