Java实现图片添加水印
参考别人的感觉挺好玩,还没仔细研究,先上代码。
1 package WaterMark; 2 3 import javax.imageio.ImageIO; 4 import java.awt.*; 5 import java.awt.image.BufferedImage; 6 import java.io.File; 7 import java.io.FileOutputStream; 8 import java.io.OutputStream; 9 10 /** 11 * Created by zhengbin06 on 2017/2/5. 12 */ 13 public class WaterMarkFont { 14 /** 15 * @param args 16 */ 17 public static void main(String[] args) { 18 19 File srcImgFile = new File("/Users/zhengbin/Downloads/2.jpg"); 20 String logoText = "www.cnblogs.com/zhengbin"; 21 22 File outputImageFile = new File("/Users/zhengbin/Downloads/2-1.jpg"); 23 24 File outputRotateImageFile = new File("/Users/zhengbin/Downloads/2-2.jpg"); 25 26 createWaterMarkByText(srcImgFile, logoText, outputImageFile); 27 28 createWaterMarkByText(srcImgFile, logoText, outputRotateImageFile, 45); 29 } 30 31 32 public static void createWaterMarkByText(File srcImgFile, String logoText, 33 File outputImageFile) { 34 createWaterMarkByText(srcImgFile, logoText, outputImageFile, 0); 35 } 36 37 public static void createWaterMarkByText(File srcImgFile, String logoText, 38 File outputImageFile, double degree) { 39 OutputStream os = null; 40 try { 41 Image srcImg = ImageIO.read(srcImgFile); 42 43 // 定义图像的宽高和图像类型 44 BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null), 45 srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB); 46 47 // 创建一个 Graphics2D,可以将它绘制到此 BufferedImage 中 48 // Graphics2D,它是用于在 Java(tm) 平台上呈现二维形状、文本和图像的基础类。 49 Graphics2D g = buffImg.createGraphics(); 50 51 g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, 52 RenderingHints.VALUE_INTERPOLATION_BILINEAR); 53 54 g.drawImage( 55 srcImg.getScaledInstance(srcImg.getWidth(null), 56 srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0, 57 null); 58 59 if (degree>0) { 60 // 旋转 61 // 将用角度表示的角转换为近似相等的用弧度表示的角 62 g.rotate(Math.toRadians(degree), 63 (double) buffImg.getWidth() / 2, 64 (double) buffImg.getHeight() / 2); 65 } 66 67 g.setColor(Color.RED); 68 69 g.setFont(new Font("宋体", Font.BOLD, 36)); 70 71 float alpha = 0.8f; 72 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 73 alpha)); 74 75 // 烙上水印 76 g.drawString(logoText, buffImg.getWidth()/3, buffImg.getHeight()/2); 77 78 // 释放此图形的上下文以及它使用的所有系统资源 79 g.dispose(); 80 81 os = new FileOutputStream(outputImageFile); 82 83 // 生成图片 84 ImageIO.write(buffImg, "JPG", os); 85 86 } catch (Exception e) { 87 e.printStackTrace(); 88 } finally { 89 try { 90 if (null != os) 91 os.close(); 92 } catch (Exception e) { 93 e.printStackTrace(); 94 } 95 } 96 } 97 }
梦想要一步步来!