java 实现图片上加字 两个图片合并 图片上加一层朦胧字体
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java 实现图片上加字 两个图片合并 图片上加一层朦胧字体,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4191字,纯文字阅读大概需要6分钟。
内容图文
![java 实现图片上加字 两个图片合并 图片上加一层朦胧字体](/upload/InfoBanner/zyjiaocheng/739/a30b5703da2b4ba7aa15a9068086e33d.jpg)
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.IOException; import javax.imageio.ImageIO;
import javax.swing.ImageIcon; public class ImageDemoOne { ? public static void main(String[] args) throws IOException {
???????? String srcImgPath="D:\\images\\1.png"; //a源图片地址
???????? String srcImgPath4="D:\\images\\4.png"; //a源水印图片地址
???????? String tarImgPath="D:\\images\\2.png"; //a待存储的地址
???????? String tarImgPath3="D:\\images\\3.png"; //a待存储的地址
???????? String waterMarkContent="图片来源:http://blog.csdn.net/zjq_1314520";? //a水印内容
???????? Color color=new Color(255,255,255,128);?????????????????????????????? //a水印图片色彩以及透明度
???????? new ImageDemoOne().addWaterMark(srcImgPath, tarImgPath, waterMarkContent, color);
???????? markImgMark(srcImgPath4, srcImgPath, tarImgPath3);
? }
?
??? /**
???? * @param srcImgPath 源图片路径
???? * @param tarImgPath 保存的图片路径
???? * @param waterMarkContent 水印内容
???? * @param markContentColor 水印颜色
???? * @param font 水印字体
???? */
??? public void addWaterMark(String srcImgPath, String tarImgPath,
??? ??String waterMarkContent,Color markContentColor) { ??????? try {
??????????? // a读取原图片信息
??????????? File srcImgFile = new File(srcImgPath);//得到文件
??????????? Image srcImg = ImageIO.read(srcImgFile);//文件转化为图片
??????????? int srcImgWidth = srcImg.getWidth(null);//获取图片的宽
??????????? int srcImgHeight = srcImg.getHeight(null);//获取图片的高
??????????? // a加水印
??????????? BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);
??????????? Graphics2D g = bufImg.createGraphics();
??????????? g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
??????????? g.setColor(markContentColor); //a根据图片的背景设置水印颜色
??????????
??????????? int fontLength = (int) (srcImgWidth*0.055);
??????????? Font font2 = new Font("微软雅黑", Font.PLAIN, fontLength);
??????????? g.setFont(font2);? //a设置字体
??????????? //a设置水印的坐标
??????????? int x = (int) (srcImgWidth-getWatermarkLength(waterMarkContent,g)-fontLength);
??????????? int y = (int) (srcImgHeight*0.96);
??????????? g.drawString(waterMarkContent, x, y);? //a画出水印
??????????? g.dispose();?
??????????? // a输出图片?
??????????? FileOutputStream outImgStream = new FileOutputStream(tarImgPath);?
??????????? ImageIO.write(bufImg, "png", outImgStream);
??????????? System.out.println("添加水印完成");?
??????????? outImgStream.flush();?
??????????? outImgStream.close();? ??????? } catch (Exception e) {
??????????? // TODO: handle exception
??????? }
??? }
??? public int getWatermarkLength(String waterMarkContent, Graphics2D g) {?
??????? return g.getFontMetrics(g.getFont()).charsWidth(waterMarkContent.toCharArray(), 0, waterMarkContent.length());?
??? }?
??? /**
? * 为图片添加图片水印
? * @param watermarkUrl 原图
? * @param source 水印图片
? * @param output 制作完成的图片
? * @return
? * @throws IOException
? */
?public static String markImgMark(String watermarkUrl,
???String source, String output) throws IOException {
??String result = "添加图片水印出错";
??File file = new File(source);
??Image img = ImageIO.read(file);
??int width = img.getWidth(null);//水印宽度
??int height = img.getHeight(null);//水印高
??BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
??Graphics2D g = bi.createGraphics();
??g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
??g.drawImage(img.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);
??ImageIcon imgIcon = new ImageIcon(watermarkUrl);
??Image con = imgIcon.getImage();
??float clarity = 0.6f;//透明度
??g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, clarity));
??
??g.drawImage(con, 10, 10, null);//水印的位置
??g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
??g.dispose();
??File sf = new File(output);
??ImageIO.write(bi, "png", sf); // 保存图片
??System.out.println("添加图片水印成功");
??return result;
?}
??
}
内容总结
以上是互联网集市为您收集整理的java 实现图片上加字 两个图片合并 图片上加一层朦胧字体全部内容,希望文章能够帮你解决java 实现图片上加字 两个图片合并 图片上加一层朦胧字体所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。