Java实现 图片水印或者文字水印
发布时间:2020-12-15 03:19:14 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 在原图之上再画一张图片(drawImage)或者文本文字(drawString),Java SE中提供了?java.awt.image包和javax.imageio包可以实现非常方便的实现 图片水印
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考
在原图之上再画一张图片(drawImage)或者文本文字(drawString),Java SE中提供了?java.awt.image包和javax.imageio包可以实现非常方便的实现 图片水印或者文字水印。
import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import javax.imageio.ImageIO; import javax.swing.ImageIcon; /** * 生成图片水印 * @author Ricky Fung * */ public class WaterMarkIconTest { /** * @param args */ public static void main(String[] args) { File srcImageFile = new File("D:/test/myblog.png"); File logoImageFile = new File("D:/test/logo.png"); File outputImageFile = new File("D:/test/myblog_water_icon.jpg"); File outputRoateImageFile = new File("D:/test/myblog_water_icon_rotate.jpg"); createWaterMarkByIcon(srcImageFile,logoImageFile,outputImageFile); createWaterMarkByIcon(srcImageFile,outputRoateImageFile,45); } public static void createWaterMarkByIcon(File srcImageFile,File logoImageFile,File outputImageFile) { createWaterMarkByIcon(srcImageFile,outputImageFile,0); } public static void createWaterMarkByIcon(File srcImageFile,File outputImageFile,double degree) { OutputStream os = null; try { Image srcImg = ImageIO.read(srcImageFile); BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),srcImg.getHeight(null),BufferedImage.TYPE_INT_RGB); Graphics2D g = buffImg.createGraphics(); g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR); g.drawImage( srcImg.getScaledInstance(srcImg.getWidth(null),Image.SCALE_SMOOTH),null); ImageIcon logoImgIcon = new ImageIcon(ImageIO.read(logoImageFile)); Image logoImg = logoImgIcon.getImage(); //旋转 if (degree>0) { g.rotate(Math.toRadians(degree),(double) buffImg.getWidth() / 2,(double) buffImg.getWidth() / 2); } float alpha = 0.8f; // 透明度 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha)); //水印 的位置 g.drawImage(logoImg,buffImg.getWidth()/3,buffImg.getHeight()/2,null); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); g.dispose(); os = new FileOutputStream(outputImageFile); // 生成图片 ImageIO.write(buffImg,"JPG",os); } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != os) os.close(); } catch (Exception e) { e.printStackTrace(); } } } } import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import javax.imageio.ImageIO; /** * 生成文字水印 * @author Ricky Fung * */ public class WaterMarkTextTest { /** * @param args */ public static void main(String[] args) { File srcImgFile = new File("D:/test/myblog.png"); String logoText = "[ 水印文字 电话邦 ]"; File outputImageFile = new File("D:/test/myblog_water_text.jpg"); File outputRotateImageFile = new File("D:/test/myblog_water_text_rotate.jpg"); createWaterMarkByText(srcImgFile,logoText,outputImageFile); createWaterMarkByText(srcImgFile,outputRotateImageFile,45); } public static void createWaterMarkByText(File srcImgFile,String logoText,File outputImageFile) { createWaterMarkByText(srcImgFile,0); } public static void createWaterMarkByText(File srcImgFile,double degree) { OutputStream os = null; try { Image srcImg = ImageIO.read(srcImgFile); BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),null); if (degree>0) { g.rotate(Math.toRadians(degree),(double) buffImg.getHeight() / 2); } g.setColor(Color.RED); g.setFont(new Font("宋体",Font.BOLD,36)); float alpha = 0.8f; g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha)); g.drawString(logoText,buffImg.getHeight()/2); g.dispose(); os = new FileOutputStream(outputImageFile); // 生成图片 ImageIO.write(buffImg,os); } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != os) os.close(); } catch (Exception e) { e.printStackTrace(); } } } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |