其主要目的是保护图像版权,防止他人在未经许可的情况下使用图片。水印有多种类型,常见的包括:文本水印:在图像上添加特定的文字信息,如作者名、公司名或版权声明等。...无论是文本水印还是图像水印,其核心都是将水印内容绘制在目标图像上。Java 提供了强大的 Graphics2D 类,可以用来在图像上绘制各种图形和文本。...在添加水印时,我们将使用 Graphics2D 对象来绘制水印。2.2 AlphaComposite 控制透明度在为图片添加水印时,我们通常需要控制水印的透明度,使其不会完全遮盖住原图。...每次绘制文本时,我们根据文本的宽度和高度调整绘制坐标,以确保文本不重叠。...可以调整循环的步长以改变水印图像之间的间距。7. 综合示例:创建一个水印工具类为了便于重复使用,我们可以将上述不同类型的水印方法封装到一个工具类中。这样可以更方便地在不同项目中应用水印功能。
/** * 创建一个指定宽高的图片内存对象 * width : 宽度 * height : 高度 * imageType : 图片类型 参数为BufferedImage 自身定义的常量...(); //然后使用 Graphics 类在图片上绘制线段、矩形、图片、文本,设置背景颜色等等操作 // 设置画布颜色 void setColor(Color c) // 设置字体颜色 void setFont...代码实现:略 (这种清除水印的需求还是交给PS这种专业软件去做吧) 贝塞尔曲线 通常绘制线段直接使用一下的方法就可以了drawLine方法就可以了。...但是在实现曲线的时候就很难看,所以需要用到贝塞尔曲线。...可以通过Path类来实现贝塞尔曲线的效果 BufferedImage image = new BufferedImage(500, 500, BufferedImage.TYPE_INT_RGB); Graphics2D
功能需求 功能一:我们可以在程序上进行随意绘画,点击保存按钮,我们可以将刚才绘画的内容进行保存,可以选择自己所需要的类型进行保存 功能二:在界面上按照提示,点击“浏览”按钮,打开文件对话框,选择图片,图片会显示在页面中...drawingArea: 一个 BufferedImage 类型的变量,用于存储绘图区域的内容。 g2D: 一个 Graphics2D 类型的变量,用于在 drawingArea 上进行绘图操作。...在构造函数中: 创建了一个 300x300 像素的 BufferedImage 作为绘图区域,并获取它的 Graphics2D 对象。...添加了鼠标拖动事件监听器,在鼠标拖动时将鼠标位置记录到 pathPoints 列表中,并使用临时的 Graphics2D 对象绘制路径。...private void drawPath(Graphics2D g2D) 方法用于遍历 pathPoints 列表,并使用 Graphics2D 对象在 drawingArea 上绘制连接这些点的直线
Graphics2D g = (Graphics2D)bi.getGraphics();//得到绘制环境 g.setColor(Color.WHITE);//把环境设置为白色...类的一个对象,BufferedImage类的构造方法中,第一个参数和第二个参数表示图片的长和宽,第三个参数是图片的类型;然后获取绘制环境,也可以理解为获取当前图片的画笔,使用该对象可以设置一系列的属性,...2.生成字母验证码 通过以上对自动绘制图片的了解,下面我们来完成另外一个绘制图片的类,这个类相较于上面的ImageTest类要复杂很多,如下所示: (1)在ImageTest同包下新建一个Class类...,然后创建当前图片的画笔Graphics2D类的对象,再利用r对象生成四个值,其中x1和x2的大小范围在0~70之间,y1和y2的大小在0~35之间,这四个值是用来作为确定一条直线的两个点的坐标,由于有三条干扰线...,所以这里使用for循环,然后每循环一次就使用画笔对象g2的drawLine()方法绘制一条线。
博客地址:https://ainyi.com/58 Java 开发精美艺术二维码 看到网络上各种各样的二维码层出不穷,好像很炫酷的样子,一时兴起,我也要制作这种炫酷二维码效果 例如: [ext.jpg]...,点状部分替换成有颜色的点,汇聚成一张精美的二维码 那么实现的关键点就是:==替换== 将制作好的小图片素材,按照编号命名,三个码眼使用大图片素材,其他使用不相同小图片素材,绘制二维码图片的时候,将画笔改为将插入图片素材...drawImage 根据不同类型的艺术二维码(不同的素材),使用不同的算法 话不多说,上代码 /** * QrcodeText 二维码 * @author krry * @version 1.0...二维码类型下的标号 如1 * @param arti 使用算法类型 如0 热门 * @param transparent 是否透明 1:透明 0背景是白色 * @param...y = (imageBG.getHeight() - 640) / 2; } //如果类型是名片,判断二维码在背景图片的位置,单码图片缩小到640像素 if
); //BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); // 获取Graphics2D...Graphics2D g2d = bi.createGraphics(); // 画图BasicStroke是JDK中提供的一个基本的画笔类,我们对他设置画笔的粗细,就可以在drawPanel上任意画出自己想要的图形了...,我们对他设置画笔的粗细,就可以在drawPanel上任意画出自己想要的图形了。...对象 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取Graphics2D...,我们对他设置画笔的粗细,就可以在drawPanel上任意画出自己想要的图形了。
图片合成 利用Java的绘图方法,实现图片合成 在开始之前,先定一个小目标,我们希望通过图片合成的方式,创建一个类似下面样式的图片 I....图片绘制 绘制图片,一般来讲需要知道: 绘制的坐标(x,y) 绘制图片的宽高(w,h),当目标是绘制原图时,宽高一般为图片本身的宽高 结合上面两点,图片组成单元的定义如下: ImgCell @Data..., 所以在水平布局文字时,需要通过 calculateX方法获取新的x坐标;竖直布局文字时,需要通过 calculateY获取新的y坐标 实际代码如下 @Data public class TextCell...,使用了博文系列中的工具方法 GraphicUtil.splitStr,有兴趣的关注源码进行查看 水平布局时,期望 startX < endX, 从习惯来讲,基本上我们都是从左到右进行阅读 水平or垂直布局...,都希望是 startY < endY 垂直布局时,以字符为单位进行绘制;标点符号的绘制时,x坐标有一个偏移量 3.
bf = new BufferedImage(options.getImgW(), realH, BufferedImage.TYPE_INT_ARGB); Graphics2D...内容填充 GraphicUtil 具体的内容填充,区分为文本绘制和图片绘制 设计 考虑到在填充的过程中,可以自由设置字体,颜色等,所以在我们的绘制方法中,直接实现掉内容的绘制填充,即 drawXXX...图片绘制 只需要重新计算下待绘制图片的宽高即可,具体实现如下 /** * 在原图上绘制图片 * * @param source 原图 * @param dest 待绘制图片 * @param...-- 解决这些问题则是在 ImgCreateWrapper 的具体绘制中进行了实现,先看文本的绘制 根据换行符对字符串进行拆分 计算绘制内容最终转换为图片时,所占用的高度 重新生成画布 BufferedImage...,特别是高度超过上限之后,重新计算图片高度时,需要额外注意新增的高度,应该为基本的增量与(绘制内容高度+下边距)的较大值 int realAddH = Math.max(bufferedImage.getHeight
竖排文字绘制 首先需要支持竖排文字的绘制,使用Graphics2d进行绘制时,暂不支持竖排绘制方式,因此我们需要自己来实现 而设计思路也比较简单,一个字一个字的绘制,x坐标不变,y坐标依次增加 private...封装类的实现 正如前面一篇博文中实现的水平图文生成的逻辑一样,垂直图文生成也采用之前的思路: 每次在文本绘制时,直接进行渲染; 记录实际内容绘制的宽度(这个宽度包括左or右边距) 每次绘制时,判断当前的画布是否容纳得下所有的内容...容的下,直接绘制即可 容不下,则需要扩充画布,生成一个更宽的画布,将原来的内容重新渲染在新画布上,然后在新画布上进行内容的填充 因为从左到右和从右到左的绘制在计算x坐标的增量时,扩充画布的重新绘制时...在新画布上绘制原画布内容的x坐标计算,一个为0,一个为 新宽度-旧宽度 offsetX 的计算 上面是文本绘制,图片绘制比较简单,基本上和水平绘制时,没什么区别,只不过是扩充时的w,h计算不同罢了 private...输出 上面是绘制的过程,绘制完毕之后,需要输出为图片的,因此对于这个输出需要再适配一把 再前一篇的基础上,输出新增了签名+背景的支持,这里一并说了 计算生成图片的宽高 有签名时,绘制签名背景,在最下方绘制签名文本
, h, BufferedImage.TYPE_INT_RGB); 68 Graphics2D g2 = (Graphics2D)image.getGraphics(); 69...getImage () { 76 BufferedImage image = createImage();//创建图片缓冲区 77 Graphics2D g2 =...(Graphics2D)image.getGraphics();//得到绘制环境 78 StringBuilder sb = new StringBuilder();//用来装载生成的验证码文本...bi=vc.getImage();//得到验证码图片,是一个BufferedImage类型的 13 VerifyCode.output(bi, new FileOutputStream...VerifyCode.jpg")); 14 15 System.out.println(vc.getText()); 16 } 17 } 运行后会在指定文件路径下生成一张图片,以及在控制台打印图片上的文本
Graphics2D graphics = (Graphics2D)image.getGraphics(); graphics.clearRect(0, 0, width, height...image, Graphics2D graphics) { int alpha = 0; // 外层遍历是Y轴的像素 for (int y = image.getMinY...BufferedImage(width, height, BufferedImage.TYPE\_4BYTE\_ABGR); // 获取画笔 Graphics2D...g2D = (Graphics2D) bufferedImage.getGraphics(); // 绘制Image的图片 g2D.drawImage(imageIcon.getImage...0x00ff00) >> 8; // 获取color(RGB)中B位 int blue = (color & 0x0000ff); // 通过RGB三分量来判断当前颜色是否在指定的颜色区间内
碰到一个证书颁发的需求,要求是啥呢,提供一个模板,给模板填充文字。 这个需求其实也很常见,java.awt中的Graphics2D就可以完成我目前所有的需求。...例如:填充图片文字(不损失模板帧数的前提下)、给文字设置字体大小、设置字体颜色等 Graphics2D统统可以实现。...Java语言在Graphics类提供绘制各种基本的几何图形的基础上,扩展Graphics类提供一Graphics2D类,它拥用更强大的二维图形处理能力,提供、坐标转换、颜色管理以及文字布局等更精确的控制...Graphics2D定义了几种方法,用于添加或改变图形的状态属性。可以通过设定和修改状态属性,指定画笔宽度和画笔的连接方式;设定平移、旋转、缩放或修剪变换图形;以及设定填充图形的颜色和图案等。...图形状态属性用特定的对象储存。 当然了Graphics2D的功能不止于此,如果有类似的需求也可以仔细研究一下。
摘要 生成二维码: 首先,使用合适的库(比如 ZXing)生成一个二维码。你可以定义二维码的内容、大小和其他属性。...可以使用 Java 的图像处理工具类来进行缩放。 将 Logo 添加到二维码中间: 计算出二维码的中心位置,然后将调整后的 Logo 图片绘制到二维码的中心。...可以使用 Java 的 Graphics2D 对象来操作图像。 保存最终结果: 将合并后的二维码保存为图片文件,或者进行进一步的处理,如显示在图形界面中。...可以使用 Java 的图像处理工具类来进行缩放。 将 Logo 添加到二维码中间: 计算出二维码的中心位置,然后将调整后的 Logo 图片绘制到二维码的中心。...可以使用 Java 的 Graphics2D 对象来操作图像。 保存最终结果: 将合并后的二维码保存为图片文件,或者进行进一步的处理,如显示在图形界面中。
在Web应用程序中,验证码(CAPTCHA)是一种常见的安全工具,用于验证用户是否为人类而不是机器。验证码通常以图像形式呈现,要求用户在登录或注册时输入正确的字符。...在本文中,我们将重点介绍字符验证码的实现,这是最常见的验证码类型之一。 实现字符验证码 要实现字符验证码,我们将使用Java的Servlet技术和一些开源库。...在项目中,创建一个新的Servlet,我们将在其中实现验证码生成和呈现。 步骤2:导入必要的库 为了生成验证码图像,我们将使用Java的BufferedImage类。...对象,然后使用Graphics2D对象绘制验证码图像。...在本文中,我们介绍了如何使用Java Servlet技术创建和显示验证码图像,以及如何在用户登录时验证用户的输入。这只是验证码实现的一个示例,您可以根据需要进行自定义和扩展。
前提准备 1.相关博文 在直接进入上面花样的二维码生成之前,有必要安利一把zxing的基本使用方式,本篇将不会对如何使用zxing进行说明,有需求了解的可以参考下面几篇相关博文,此篇博文是 《spring-boot...,有这些参数之后才能唯一指定最终的输出结果,所以就有了上面的几个参数 第二步, 二维码信息的绘制 根据上面的二维码矩阵来渲染二维码图片,先考虑最简单的,没有任何配置时,可以怎么玩?...到第二步,其实二维码就已经绘制完成了,二维码和背景都是在二维码这种图片上做文章,一个是往二维码上加图片,一个是将二维码绘制在另一张图片上 一个图片在另一个图片上绘制没啥技术含量,稍微特别点的就是logo...,除了支持之前的设置二维码透明度,全覆盖背景图之外,又支持了在背景图的指定位置处进行绘制二维码,因为这一块确实没什么好讲的,干脆贴下代码好了 /** * 绘制背景图 * * @param source...说明 上面的改造,在实际使用时,建议多测试测试是否可以扫描出来,腾讯系列产品的二维码扫描特别给力,一般都能很迅速的识别,其他的就不好说了 其他 相关博文 java 实现二维码生成工具类 zxing 二维码大白边一步一步修复指南
图片验证码 1.装有各种成语的文本文件 2.随机选取词语并绘制的servlet 3.页面静态文件html 4.判断验证码是否输入正确的servlet 01 words.txt 福如东海 寿比南山 马到成功...public void init() throws ServletException { // 初始化阶段,读取new_words.txt // web工程中读取 文件,必须使用绝对磁盘路径...BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB...); // 步骤二 图片绘制背景颜色 ---通过绘图对象 Graphics graphics = bufferedImage.getGraphics();// 得到画图对象...(0, 0, width - 1, height - 1); // 步骤四 四个随机数字 Graphics2D graphics2d = (Graphics2D) graphics
; // 汉字数字 private static final String SOURCE = "零一二三四五六七八九十乘除加减"; // 计算类型 private static...g.setColor(color()); for (int i = 0; i < IMAGE_DISTURB_LINE_NUMBER; i++) { // 绘制干扰线...image = new BufferedImage(IMAGE_WIDTH, IMAGE_HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics2D...g2d.setFont(font()); FontMetrics fontMetrics = g2d.getFontMetrics(); // 每一个字符所占的宽度...*/ public class Main { @SneakyThrows public static void main(String[] args) { // 图片类型
= new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = (Graphics2D)...this.text = sb.toString(); drawLine(image); return image; } /** * 绘制干扰线...* * @param image */ private void drawLine(BufferedImage image) { Graphics2D...方法,在doFilter方法中,当请求方法是POST,并且请求地址是 /doLogin时,获取参数中的code字段值,该字段保存了用户从前端页面传来的验证码,然后获取session中保存的验证码,如果用户没有传来验证码...配置 最后在SpringSecurity的配置中,配置过滤器,如下: @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter
01、大致思路 采集网络图片 加载海报背景和个人品牌二维码 利用 Graphics2D 将网络图片绘制成海报封面 利用 Graphics2D 在海报上打印中英文对照语 利用 Graphics2D 在海报上绘制个人专属二维码...BufferedImage 使用可访问的图像数据缓冲区描述图像,由颜色模型和图像数据栅格组成,所有 BufferedImage 对象的左上角坐标为(0,0)。...注意,deleteOnExit() 方法请求在虚拟机终止时删除此抽象路径名所表示的文件或目录。...07、利用 Graphics2D 在海报上绘制个人专属二维码 有了前面绘制海报封面的经验,绘制二维码就变得轻而易举了。...09、将项目打成 jar 包发行 在将应用程序进行打包时,使用者都希望开发者只提供一个单独的文件,而不是包含大量源码的文件夹。jar 包存在的目的正源于此。
在Web应用程序中,验证码(CAPTCHA)是一种常见的安全工具,用于验证用户是否为人类而不是机器。验证码通常以图像形式呈现,要求用户在登录或注册时输入正确的字符。...在本文中,我们将重点介绍字符验证码的实现,这是最常见的验证码类型之一。实现字符验证码要实现字符验证码,我们将使用Java的Servlet技术和一些开源库。...在项目中,创建一个新的Servlet,我们将在其中实现验证码生成和呈现。步骤2:导入必要的库为了生成验证码图像,我们将使用Java的BufferedImage类。...对象,然后使用Graphics2D对象绘制验证码图像。...在本文中,我们介绍了如何使用Java Servlet技术创建和显示验证码图像,以及如何在用户登录时验证用户的输入。这只是验证码实现的一个示例,您可以根据需要进行自定义和扩展。
领取专属 10元无门槛券
手把手带您无忧上云