java swt课程设计_Java-SWT怎么做图片水印和文字水印?

Java添加水印 图片水印 文字水印

水印的处理。。。以下有两种方式:

第一种是添加文字水印;

第二种是添加图片水印;

现在附上代码 2种的源码

package com。

yjf。image;

import java。awt。AlphaComposite;

import java。awt。Color;

import java。

awt。Font;

import java。awt。Graphics2D;

import java。awt。Image;

import java。awt。geom。AffineTransform;

import java。

awt。image。AffineTransformOp;

import java。awt。image。BufferedImage;

import java。io。File;

import java。

io。IOException;

import javax。imageio。ImageIO;

/**

?* 图片工具类, 图片水印,文字水印,缩放,补白等

?* @author Carl He

?*/

public final class ImageUtils {

? ? /**图片格式:JPG*/

? ? private static final String PICTRUE_FORMATE_JPG = "jpg";

? ? private ImageUtils(){}

? ? /**

? ? ?* 添加图片水印

? ? ?* @param targetImg 目标图片路径,如:C://myPictrue//1。

jpg

? ? ?* @param waterImg ?水印图片路径,如:C://myPictrue//logo。png

? ? ?* @param x 水印图片距离目标图片左侧的偏移量,如果x widthDiff){

? ? ? ? ? ? ? ? ? ? x = widthDiff;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? if(y heightDiff){

? ? ? ? ? ? ? ? ? ? y = heightDiff;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? g。

drawImage(waterImage, x, y, width_1, height_1, null); // 水印文件结束

? ? ? ? ? ? ? ? g。dispose();

? ? ? ? ? ? ? ? ImageIO。

write(bufferedImage, PICTRUE_FORMATE_JPG, file);

? ? ? ? ? ? } catch (IOException e) {

? ? ? ? ? ? ? ? e。

printStackTrace();

? ? ? ? ? ? }

? ? }

? ? /**

? ? ?* 添加文字水印

? ? ?* @param targetImg 目标图片路径,如:C://myPictrue//1。

jpg

? ? ?* @param pressText 水印文字, 如:中国证券网

? ? ?* @param fontName 字体名称, ? ?如:宋体

? ? ?* @param fontStyle 字体样式,如:粗体和斜体(Font。

BOLD|Font。ITALIC)

? ? ?* @param fontSize 字体大小,单位为像素

? ? ?* @param color 字体颜色

? ? ?* @param x 水印文字距离目标图片左侧的偏移量,如果x widthDiff){

? ? ? ? ? ? ? ? x = widthDiff;

? ? ? ? ? ? }

? ? ? ? ? ? if(y heightDiff){

? ? ? ? ? ? ? ? y = heightDiff;

? ? ? ? ? ? }

? ? ? ? ? ? g。

drawString(pressText, x, y height_1);

? ? ? ? ? ? g。dispose();

? ? ? ? ? ? ImageIO。write(bufferedImage, PICTRUE_FORMATE_JPG, file);

? ? ? ? } catch (Exception e) {

? ? ? ? ? ? e。

printStackTrace();

? ? ? ? }

? ? }

? ? /**

http://www。qi788。com/info-43。

html

? ? ?* 获取字符长度,一个汉字作为 1 个字符, 一个英文字母作为 0。5 个字符

? ? ?* @param text

? ? ?* @return 字符长度,如:text="中国",返回 2;text="test",返回 2;text="中国ABC",返回 4。

*/

? ? public static int getLength(String text) {

? ? ? ? int textLength = text。length();

? ? ? ? int length = textLength;

? ? ? ? for (int i = 0; i 1) {

? ? ? ? ? ? ? ? length ;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return (length % 2 == 0) ? length / 2 : length / 2 1;

? ? }

? ? /**

? ? ?* 图片缩放

? ? ?* @param filePath 图片路径

? ? ?* @param height 高度

? ? ?* @param width 宽度

? ? ?* @param bb 比例不对时是否需要补白

*/

? ? public static void resize(String filePath, int height, int width, boolean bb) {

? ? ? ? try {

? ? ? ? ? ? double ratio = 0; //缩放比例 ? ?

? ? ? ? ? ? File f = new File(filePath); ?

? ? ? ? ? ? BufferedImage bi = ImageIO。

read(f); ?

? ? ? ? ? ? Image itemp = bi。getScaledInstance(width, height, BufferedImage。SCALE_SMOOTH); ?

? ? ? ? ? ? //计算比例 ?

? ? ? ? ? ? if ((bi。

getHeight() > height) || (bi。getWidth() > width)) { ?

? ? ? ? ? ? ? ? if (bi。getHeight() > bi。getWidth()) { ?

? ? ? ? ? ? ? ? ? ? ratio = (new Integer(height))。

doubleValue() / bi。getHeight(); ?

? ? ? ? ? ? ? ? } else { ?

? ? ? ? ? ? ? ? ? ? ratio = (new Integer(width))。

doubleValue() / bi。getWidth(); ?

? ? ? ? ? ? ? ? } ?

? ? ? ? ? ? ? ? AffineTransformOp op = new AffineTransformOp(AffineTransform。

getScaleInstance(ratio, ratio), null); ?

? ? ? ? ? ? ? ? itemp = op。filter(bi, null); ?

? ? ? ? ? ? } ?

? ? ? ? ? ? if (bb) { ?

? ? ? ? ? ? ? ? BufferedImage image = new BufferedImage(width, height, BufferedImage。

TYPE_INT_RGB); ?

? ? ? ? ? ? ? ? Graphics2D g = image。createGraphics(); ?

? ? ? ? ? ? ? ? g。setColor(Color。

white); ?

? ? ? ? ? ? ? ? g。fillRect(0, 0, width, height); ?

? ? ? ? ? ? ? ? if (width == itemp。

getWidth(null)) ?

? ? ? ? ? ? ? ? ? ? g。drawImage(itemp, 0, (height - itemp。getHeight(null)) / 2, itemp。getWidth(null), itemp。

getHeight(null), Color。white, null); ?

? ? ? ? ? ? ? ? else ?www。2cto。com

? ? ? ? ? ? ? ? ? ? g。

drawImage(itemp, (width - itemp。getWidth(null)) / 2, 0, itemp。getWidth(null), itemp。getHeight(null), Color。white, null); ?

? ? ? ? ? ? ? ? g。

dispose(); ?

? ? ? ? ? ? ? ? itemp = image; ?

? ? ? ? ? ? }

? ? ? ? ? ? ImageIO。write((BufferedImage) itemp, "jpg", f); ?

? ? ? ? } catch (IOException e) {

? ? ? ? ? ? e。

printStackTrace();

? ? ? ? }

? ? }

? ? public static void main(String[] args) throws IOException {

? ? ? pressText("D:/yjf/myworkspace/SimilarImageSearch/images/1。

jpg", "水印测试文字", "宋体", Font。BOLD, 24, Color。red, 50, 50, 0。3f);

? ? }

全部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值