/**
* 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图片画框,算法标记
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 由于最近的Java作业要求将图片放大缩小,主要就是选用一种插值算法,如最邻近插值、双线性二次插值、双线性三次插值,...
- 前言 最近公司孵化一个项目,里面涉及到大量的原创照片及图片,目前我们使用的明文水印,不但对用户体验有一定影响,并且...
- FuzzyDetection 图片择优(选择最清楚的图片)Java实现 效果不错 大家可以自己改成自己喜欢的语言 ...
- 先上效果图 1.为了实现图片的放到缩小,我选择了PhotoView 框架用于显示图片。 2.使用Glide 框架加...