您的位置:首页 > 编程语言 > Java开发

Java编写(模仿51CTO 给图片加上水印)--原创

2013-08-24 17:28 399 查看
代码很简单,没有什么新意!就是利用JDK做的简单绘图和变换!
package com.oracle.day16;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.font.FontRenderContext;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
/**
*
*@author huyongjian Oracle(Compus Solution Group)
* @Date  2013-8-16
* @version 2.0
* @since JDK1.6(建议)
Copy Right Information    COMPUS SOLUTION GROUP
IDE:Eclipse
class:
打印生成jpg图片生成文字水印
JDK2D02
*/
public class TestJdk2D02 {
public String create(String str,String filePath,
int width,int height){
String fileName=System.currentTimeMillis()+".jpg";
String path=filePath+"/"+fileName;
File file=new File(path);
BufferedImage bi=new BufferedImage(width,height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2=(Graphics2D) bi.getGraphics();
g2.setColor.WHITE);
g2.clearRect(0, 0, width, height);
Font font=new Font("黑体",Font.BOLD,25);
g2.setFont(font);
g2.setPaint(Color.RED);
FontRenderContext context=g2.getFontRenderContext();
Rectangle2D bounds=font.getStringBounds(str, context);
double x=(width-bounds.getWidth())/2;
double y=(height-bounds.getHeight())/2;
double ascent=-bounds.getY();
double baseY=y+ascent;

g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2.drawString(str, (int)x, (int)baseY);
try {
ImageIO.write(bi, "jpg", file);
} catch (IOException e) {
e.printStackTrace();
}
return file.getPath();
}
public static void main(String[] args) {
TestJdk2D02 t=  new TestJdk2D02();
System.out.println(t.create("小夜的传说","c:/",500,38));
}
}
运行之后在您的C盘中可以查看生成图片的水印!
群号:1936625305 Java程序员联盟 欢迎大家的加入!


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息