栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 图片画框并读取成base64数据

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 图片画框并读取成base64数据

示例的rectangle坐标数据形式为"1,10;1,110;101,10;101,110",供参考

//需要引入的包贴一下
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.*;

画框方法:鉴于我的参数格式是四个点,我选择的是划线方法drawLine,参数格式比较方便的其实可以使用drawRect方法,我的具体写法如下,仅供参考,其中画完以后也可以处理成图片,鉴于我的业务需求我这边是转成了base64供后面用

  private String drawRect(String imageUrl, String rectangle) throws Exception {
        // new一个URL对象
        URL url = new URL(imageUrl);
        BufferedImage image = ImageIO.read(url);
        Graphics g = image.getGraphics();
        g.setColor(Color.RED);//画笔颜色
        if (!StringUtils.isEmpty(rectangle)) {
            String[] points = rectangle.split(";");
            if (points.length > 3) {
                String[] pointOne = points[0].split(",");
                String[] pointTwo = points[1].split(",");
                String[] pointThree = points[2].split(",");
                String[] pointFour = points[3].split(",");
                g.drawLine(Integer.valueOf(pointOne[0]), Integer.valueOf(pointOne[1]), Integer.valueOf(pointTwo[0]), Integer.valueOf(pointTwo[1]));
                g.drawLine(Integer.valueOf(pointOne[0]), Integer.valueOf(pointOne[1]), Integer.valueOf(pointThree[0]), Integer.valueOf(pointThree[1]));
                g.drawLine(Integer.valueOf(pointTwo[0]), Integer.valueOf(pointTwo[1]), Integer.valueOf(pointFour[0]), Integer.valueOf(pointFour[1]));
                g.drawLine(Integer.valueOf(pointThree[0]), Integer.valueOf(pointThree[1]), Integer.valueOf(pointFour[0]), Integer.valueOf(pointFour[1]));
                //图片转base64
                ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
                ImageIO.write(image,"jpg",outputStream);
                byte[] bytes=outputStream.toByteArray();
                BASE64Encoder encode = new BASE64Encoder();
                String base64String = encode.encode(bytes);
                if (!StringUtils.isEmpty(base64String)) {
                    System.out.println("顺利生成框测图的base64数据" + base64String.substring(0, 20));
                }
                outputStream.close();
                g.dispose();
                return base64String;
            }
        }
        return "";
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1032297.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号