JAVA给图片添加水印,java初级面试笔试题


我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家。
扫描二维码或搜索下图红色VX号,加VX好友,拉你进【程序员面试学习交流群】免费领取。也欢迎各位一起在群里探讨技术。
推荐文章:Java 面试知识点解析Mysql优化技巧(数据库设计、命名规范、索引优化


 

package com.test; import org.junit.Test; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; public class JunitImage { @Test public void testImage(){ markImageByText("hello world","D:/1.jpg","D:2.jpg",45,new Color(0,0,0),"JPG"); } /** * 给图片添加水印文字、可设置水印文字的旋转角度 * @param logoText 要写入的文字 * @param srcImgPath 源图片路径 * @param newImagePath 新图片路径 * @param degree 旋转角度 * @param color 字体颜色 * @param formaName 图片后缀 */ public static void markImageByText(String logoText, String srcImgPath,String newImagePath,Integer degree,Color color,String formaName) { InputStream is = null; OutputStream os = null; try { // 1、源图片 java.awt.Image srcImg = ImageIO.read(new File(srcImgPath)); BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB); // 2、得到画笔对象 Graphics2D g = buffImg.createGraphics(); // 3、设置对线段的锯齿状边缘处理 g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR); g.drawImage(srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), java.awt.Image.SCALE_SMOOTH), 0, 0, null); // 4、设置水印旋转 if (null != degree) { g.rotate(Math.toRadians(degree), buffImg.getWidth()/2,buffImg.getHeight() /2); } // 5、设置水印文字颜色 g.setColor(color); // 6、设置水印文字Font g.setFont(new java.awt.Font("宋体", java.awt.Font.BOLD, buffImg.getHeight() /2)); // 7、设置水印文字透明度 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.15f)); // 8、第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y) g.drawString(logoText, buffImg.getWidth()/2 , buffImg.getHeight()/2); // 9、释放资源 g.dispose(); // 10、生成图片 os = new FileOutputStream(newImagePath); ImageIO.write(buffImg, formaName, os); } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != is) is.close(); } catch (Exception e) { e.printStackTrace(); } try { if (null != os) os.close(); } catch (Exception e) { e.printStackTrace(); } } } }





转载:https://www.cnblogs.com/qinxu/p/8350521.html

推荐内容:
大白话说Java反射:入门、使用、原理
VSCode配置JAVA开发环境
Java多线程面试问题
Java 面试知识点解析(五)——网络协议篇
java面试
Java的深拷贝和浅拷贝
Java 面试知识点解析(二)——高并发编程篇
2018年如何快速学Java
【Java】留下没有基础眼泪的面试题
java面试——问题回溯

猜你喜欢

转载自blog.csdn.net/agoodcoder777/article/details/89644067
今日推荐