如果遇到字体乱码的情况。可参考以下方案解决:
第一步 将Windows下的字体【宋体】库复制到服务器上 Windows字体路径:C:\Windows\Fonts\simsun.ttc
第二步 复制信息
cp simsun.ttc /usr/share/fonts/
第三步 建立索引、更新缓存
cd /usr/share/fonts/
mkfontscale
mkfontdir
fc-cache
第四步 验证字体是否安装完毕
fc-list :lang=zh
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
public class test {
public static void addWaterMark(String imagurl,String waterMarkContent,Color markContentColor,Font font){
try {
URL url = new URL(imagurl);
BufferedInputStream bis = new BufferedInputStream(url.openStream());
BufferedImage img = ImageIO.read(bis);
Integer width = img.getWidth(null);
Integer height = img.getHeight(null);
BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = tag.createGraphics();
g.drawImage(img, 0, 0, width, height, null);
g.setColor(markContentColor);
g.setFont(font);
int x = 0;
int y = height-10;
g.drawString(waterMarkContent, x, y);
g.dispose();
// ByteArrayOutputStream baos = new ByteArrayOutputStream();
// ImageIO.write(tag, "jpg", baos);
// bis.close();
// byte[] retArr = baos.toByteArray();
String path = System.getProperty("user.dir")+"/t.jpg";
System.out.println(path);
FileOutputStream file = new FileOutputStream(path);
ImageIO.write(tag, "jpg", file);
file.flush();
file.close();
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Font font = new Font("宋体", Font.PLAIN, 35);
String waterMarkContent="水印图片";
Color color=new Color(255,255,255,128);
String imagurl = ""; //图片链接
addWaterMark(imagurl,waterMarkContent, color.green, font);
}
}