java如何添加自定义的图片_java代码将图片加上自定义水印 -4

java代码将图片加上自定义水印,然后生成了新的图片

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileOutputStream;

import javax.imageio.ImageIO;

/** * @author :liu.lu

* @version 创建时间:2018年4月24日 下午9:04:20

Description:

*/

public class WaterMarkUtils {

/**

* @param srcImgPath 源图片路径

* @param tarImgPath 保存的图片路径

* @param waterMarkContent 水印内容

* @param markContentColor 水印颜色

* @param font 水印字体

*/

public void addWaterMark(String srcImgPath, String tarImgPath, String waterMarkContent,Color markContentColor,Font font) {

try {

// 读取原图片信息

File srcImgFile = new File(srcImgPath);//得到文件

Image srcImg = ImageIO.read(srcImgFile);//文件转化为图片

int srcImgWidth = srcImg.getWidth(null);//获取图片的宽

int srcImgHeight = srcImg.getHeight(null);//获取图片的高

// 加水印

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); //根据图片的背景设置水印颜色

g.setFont(font);              //设置字体

//设置水印的坐标

int x = srcImgWidth - 2*getWatermarkLength(waterMarkContent, g);

int y = srcImgHeight - 2*getWatermarkLength(waterMarkContent, g);

g.drawString(waterMarkContent, x, y);  //画出水印

g.dispose();

// 输出图片

FileOutputStream outImgStream = new FileOutputStream(tarImgPath);

ImageIO.write(bufImg, "jpg", 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());

}

public static void main(String[] args) {

Font font = new Font("微软雅黑", Font.PLAIN, 35);                    //水印字体

String srcImgPath="D:\\temp\\picture\\魔方.jpg"; //源图片地址

String tarImgPath="D:/temp/t.jpg"; //待存储的地址

String waterMarkContent="我爱生活";  //水印内容

Color color=new Color(135,206,250,130);            //水印图片色彩以及透明度

new WaterMarkUtils().addWaterMark(srcImgPath, tarImgPath, waterMarkContent,color,font);

}

}

测试结果:

原图片:

1c4cbcf4027d?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

加完之后:

1c4cbcf4027d?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

下面在给大家弄个之前在linux上弄的转换图片脚本 centos7系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vba 当前文件名_值得学习和珍藏的VBA常用编程代码语句

分享成果,随喜真能量。大家好,今天继续和大家分享VBA编程中常用的过程代码。过程代码在这里讲解的语句非常简单单一,简单的语句组合起来就是一个复杂的过程,我们要认真掌握这些简单的过程,为我们复杂的工程服务。这也是…

java上传csv错误信息_java处理csv文件上传示例详解

前言:示例只是做了一个最最基础的上传csv的示例,如果要引用到代码中去,还需要根据自己的业务自行添加一些逻辑处理。ReadCsvUtil工具类package com.hanfengyeqiao.gjb.utils;import java.io.*;import java.util.*;/*** csv工具类*/public cla…

暗金色 rgb_杜伽TAURUS K310樱桃RGB红轴体验:做工精良、手感优秀

前言DURGOD杜伽的机械键盘一直以简约的外形和优秀的手感而备受好评。笔者之前用过杜伽的K310、K320两个系列的多把键盘,对其非常熟悉,外形简约大方,手感、灯效也比较满意。正因如此,这次刚刚入手了一把杜伽K310 RGB樱桃红轴&#…

vim 显示行号_Vim给文件加行号,这通惊为天人的操作没sei了!文末天书慎点

引言一般 Vim 使用 :set number 命令,在编辑器显示行号。本文展示了如何将行号插入到正文中,或者只插入到段落中。此外,还提供了打印行号的选项(Vim 可以打印带有数字的行,并且不需要文件有数字)。Vim可以使用 :s 命令在每行之前插…

java 获取对象方法有哪些方法有哪些方法有哪些_Java中创建String 对象的方法有哪些...

Java中创建String 对象的方法有哪些发布时间:2020-11-25 16:45:30来源:亿速云阅读:71作者:Leah这篇文章将为大家详细讲解有关Java中创建String 对象的方法有哪些,文章内容质量较高,因此小编分享给大家做个参…

vb中怎么使图片适应框的大小_叮!VB考前练习了解一下?

1、Visual Basic窗体设计器的主要功能是(C )。A) 画图B) 编写源程序代码C) 建立用户界面D) 显示文字解析:Visual Basic窗体设计器简称窗体(Form),是应用程序最终面向用户的窗口,它对应于应用程序的运行结果。各种图形、图像、数据等都是…

苹果切换输入法_日语输入法哪个好

在初学日语的时候经常会遇到一些不认识的词,想查一下这个词是什么意思,应该怎么输入呢?尝试过许多软件之后,テツ为大家总结了一些认为比较好用的输入法百度IME输入法。下载安装后的切换非常简单,在右下角输入法处切换至JP日语即可…

python 10个100以内随机整数编辑_你要偷偷的学Python,然后惊呆所有人(第五天) - python阿喵

标题无意冒犯,就是觉得这个广告挺好玩的前言前期回顾:你要偷偷学Python,然后惊呆所有人(第四天)在第四天的时候,我们接触了Python的模块调用,这也是Python能够火起来的一大优势。我们还实践了csv模块。不过冷静下来想想…

安卓开发怎么调用photopicker_谷歌出手整顿安卓应用程序乱象:无良权限的APP们再见了!...

相信你在使用安卓手机的时候一定有过这样的经历,在明确拒绝了软件调用电话、手机通讯录、短信等敏感内容的访问权后,APP表示无法继续运行然后强退。如果这款APP不具备可替代性,恐怕最终结果是,用户不得不选择妥协。关于应用程序度…

react router官方文档_阿里开源可插拔 React 跨端框架 UmiJS

点击上方“开发者技术前线”,选择“星标”18:30 在看 真爱作者:Tamic | 编辑: 可可阿里之前开源:阿里闲鱼开源 Flutter 应用框架 Fish Redux! 今天介绍的是前端React 框架- UmiJS。介绍umi官方宣称是一个…

java约瑟夫环迭代器_Josephus约瑟夫环问题的不同实现方法与总结

/************************************************************************//* Josephus问题——数组实现 *//************************************************************************/#include #include int Josephus(int t…

ios 下拉放大 上拉缩小_为啥鞠婧祎发量这么多?截图放大十倍她的“发缝”,网友:真密集...

​鞠婧祎,这位女明星真的是黑,红,黑,红。这不是秘密。鞠婧祎最近几天的确很受欢迎。甚至头发也受到质疑。一般而言,娱乐业的演艺人员由于多年来的工作时间安排不规则以及采取巴拉克拉法帽的行为,通常都有使…

opencv4.5.0安装包_UG NX12.0 软件介绍(附安装包)

【软件名称】 UG NX12.0【文件大小】 5.67GB 【语言支持】 简体中文【系统类型】 64位【兼容系统】 Win7 / Win8 / Win10【下载链接】 文末扩展链接获取软件简介:西门子公司推出了最新版的Siemens NX 12.0版本(UG12.0),该软件提供了当今市场上唯一可扩展…

win7备份工具_win7系统小白一键系统详细教程

很多朋友给小白留言说,使用了新版小白的一键备份后,不知道如何还原系统。体验过新版的朋友们最大的感受就是这个工具越来越小了。接下来,win7系统的一键还原将为您带来一个详细的教程。在系统一键备份方面,如何减少系统一键还原&a…

iis php网站500错误原因_如何解决iis php 500错误问题

iis php500错误的解决办法:1、打开PHP.ini,设置显示错误;2、把“require(./xxx.php)”改成“require(xxx.php)”;3、给网站的上级目录赋予iis用户读权限即可。推荐:《PHP视频教程》本方法适用于任何品牌的电脑。IIS 配…

win10右键一直转圈_Win10总是自动更新?教你如何关掉自动更新

小白系统免费的人工客服点击联系win10怎么关闭自动更新呢?平时不定期的对系统进行更新虽然可以给让我电脑的运行变得更加流畅,但是,不少用户却遇到了win10更新之后不兼容等一系列的问题,因此,就都将要将自动更新功能关…

springboot 中文文档_还在用 Swagger生成接口文档?我推荐你试试它

JApiDocs是一个无需额外注解、开箱即用的SpringBoot接口文档生成工具。编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后端代码都是自己写的,否则API文…

wringPi 初始化GPIO 为上拉_玩转GPIO之PWM点亮呼吸灯(非树莓派)

在这篇文章,我介绍了基于逸宸电子开发的总线适配器来点亮LED灯的基本方法!myastrotong:玩转GPIO之点灯(非树莓派)​zhuanlan.zhihu.com这款总线适配器的介绍见这里:工业级高速USB转SPI I2C PWM GPIO UART C…

dnf如何快速拾取物品_DNF手游泰拉该如何获取,游戏蜂窝辅助托管快速获取泰拉...

在DNF手游中,一共存在三种的核心货币——点券,泰拉还有金币。点券是用来买商城道具的主要流动货币,金币则是用来打造装备的,而泰拉是有两种货币的共同点,所以它既能在商城购买各种道具,又能兑换金币。所以说…

java商城_java网上商城系统怎么样?优势又有哪些?

导读:大家都知道Java是一款非常实用的开发语言,而通过Java开发的商城吸引也因为其强大安全性能与使用性能等优势受到了很多企业商家的青睐,那么一款功能丰富的Java商城系统也自然成为...大家都知道Java是一款非常实用的开发语言,而…