Java-很深我只知其一-BufferedImage对象绘制图片(P图)

2023-11-02 15:18

本文主要是介绍Java-很深我只知其一-BufferedImage对象绘制图片(P图),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BufferedImage对象绘制图片(P图)

  • maven依赖
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version>
</dependency>
  • 图片中加入简单的文字,并转换为Bsae64
        String result;try {BufferedImage buffImg = ImageIO.read(new File("图片绝对路径"));Graphics2D g = (Graphics2D)buffImg.getGraphics();//得到画笔对象//设置字体,大小g.setColor(Color.BLACK);g.setFont(new Font("黑体", Font.BOLD, 37));LocalDate now = LocalDate.now();g.drawString(String.valueOf(now.getYear()), 11, 11);g.drawString(String.valueOf(now.getMonthValue()), 111, 111);g.drawString(String.valueOf(now.getDayOfMonth()), 1111, 1111);ImageIO.write(buffImg, "PNG", new File("写出后的文件路径"));BASE64Encoder encoder = new BASE64Encoder();// 文件转码result = encoder.encode(getBytes(finalPath)).replaceAll("\r\n", "");g.dispose();} catch (Exception e) {throw new MyException("文件流转化出错");}
  •  旋转与缩放
/***旋转与缩放* degree:旋转角度* shrinkW,shrinkH:缩放比例 原始值为1(值越大图片缩小)* moveX,moveY:图片在画布中的x,y位置* @param bufferedimage* @param degree* @return*/private BufferedImage rotateImage(final BufferedImage bufferedimage,final int degree,final double shrinkW,final double shrinkH,final int moveX,final int moveY) {int w = (int)Math.round(bufferedimage.getWidth()*shrinkW);int h =  (int)Math.round(bufferedimage.getHeight()*shrinkH);int type = bufferedimage.getColorModel().getTransparency();BufferedImage img;Graphics2D graphics2d;(graphics2d = (img = new BufferedImage(w, h, type)).createGraphics()).setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);graphics2d.rotate(Math.toRadians(degree), w / 2, h / 2);graphics2d.drawImage(bufferedimage, moveX,moveY, null);graphics2d.dispose();return img;}
  • 将文件对象转换为PDF
/*** 要加入PDF文件的全限定名* @param imgFilePath* 转换为PDF后文件的放置位置* @param pdfFilePath* //调节图片在PDF中的尺寸* @param ratio1* @param ratio2* @param ratio3* @param ratio4* 文件在PDF中的X,Y轴坐标* @param absoluteX* @param absoluteY* @throws Exception*/
public void image2pdf(String imgFilePath, String pdfFilePath, Float ratio1, Float ratio2, Float ratio3, Float ratio4, Float absoluteX, Float absoluteY) throws Exception {com.itextpdf.text.Document document = new com.itextpdf.text.Document();FileOutputStream fos = null;fos = new FileOutputStream(pdfFilePath);PdfWriter.getInstance(document, fos);//输出为A4纸张document.setPageSize(PageSize.A4);document.open();com.itextpdf.text.Image image = com.itextpdf.text.Image.getInstance(imgFilePath);//调节图片在PDF中的尺寸float imageHeight = image.getScaledHeight() / ratio1 * ratio2;float imageWidth = image.getScaledWidth() / ratio3 * ratio4;image.setAlignment(com.itextpdf.text.Image.ALIGN_CENTER);// 设置图片的绝对位置image.setAbsolutePosition(absoluteX, absoluteY);image.scaleAbsolute(imageWidth, imageHeight);// 插入一个图片document.add(image);document.close();fos.flush();fos.close();}

 

/*** 获得指定文件的byte数组*/private static byte[] getBytes(String filePath){byte[] buffer = null;try {File file = new File(filePath);FileInputStream fis = new FileInputStream(file);ByteArrayOutputStream bos = new ByteArrayOutputStream(8192);byte[] b = new byte[8192];int n;while ((n = fis.read(b)) != -1) {bos.write(b, 0, n);}fis.close();bos.close();buffer = bos.toByteArray();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return buffer;}

 

这篇关于Java-很深我只知其一-BufferedImage对象绘制图片(P图)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/331500

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听