图片水印--小记


图片加旋转水印---水印居中位置计算

简单说下遇到的需求:一个居中的大水印,图片大小和水印字数不固定。。。

1.居中x,y点的求值

//  计算文字宽高度
FontDesignMetrics metrics = FontDesignMetrics.getMetrics(font);
//  文字宽度
int textWidth = metrics.stringWidth(content);   
//  文字高度
int textHeight = metrics.getHeight();   

//  计算文字坐标
int x = (width - textWidth) / 2;
//如果超出图片宽度
while ((textWidth+x)>width){
    x = x / 2;
}
//水印竖直高度(我是30度的旋转)
int y_textHeigh = (int) (textWidth  *  Math.cos(Math.toRadians(60.0)));
int y = (height + y_textHeigh) / 2;

g.drawString(content, x, y);
g.dispose();

2.字体大小

//文字超过十个缩小字体大小
int textLength = waterMarkText.length();
//15 像素为换算一点字体大小
float szie = 15.0F;
if (textLength>10){
szie = (textLength-10)+15.0f;
}
int fontSize =(int) (width / szie);