您好我正试图在java中用图像写文字。
以下是mmy代码,使用英语时工作正常。但是我想添加相同的语言支持。这个文本是从用户的文本输入中选取的,我使用javascript encodeURI
对其进行编码,并使用URLDecoder.decode
在java中对其进行解码。
public static void writeText(String label, String rgb , BufferedImage bi, float yAxis) {
Font font = CustomFont.getFont(30f);
FontRenderContext frc = new FontRenderContext(null, true, true);
TextLayout layout = new TextLayout(label.toUpperCase(), font, frc);
Rectangle r = layout.getPixelBounds(null, 0, 0);
Graphics2D g2d = (Graphics2D) bi.getGraphics();
Color fontColor = new Color(0,0,0);
if(rgb!=null){
try {
String[] rgbArray = rgb.trim().split(",");
fontColor = new Color(Integer.parseInt(rgbArray[0]), Integer.parseInt(rgbArray[1]), Integer.parseInt(rgbArray[2]));
}catch(Exception e){
logger.info("Error applying color ["+rgb+"]. Defaulting to [0,0,0]");
}
}
g2d.setColor(fontColor);
float x = (bi.getWidth()/2)-(float)r.getWidth()/2;
layout.draw(g2d, x, yAxis);
g2d.dispose();
}
public class CustomFont {
private static final Logger logger = Logger.getLogger(CustomFont.class);
private static Font fontBase;
static {
try {
InputStream is = new ClassPathResource("font/opensans-condlight-webfont.ttf").getInputStream();
fontBase = Font.createFont(Font.TRUETYPE_FONT, is);
} catch (FontFormatException e) {
logger.warn("Unable to load font <opensans-condlight-webfont> loading default");
logger.warn(e);
fontBase = new Font("Arial",Font.PLAIN,20);
} catch (IOException e) {
logger.warn("Unable to load font <opensans-condlight-webfont> loading default");
logger.warn(e);
fontBase = new Font("Arial",Font.PLAIN,20);
} catch (Exception e){
logger.warn("Unable to load font <opensans-condlight-webfont> loading default");
logger.warn(e);
fontBase = new Font("Arial",Font.PLAIN,20);
}
}
public static Font getFont(float size){
return fontBase.deriveFont(size);
}
}
我正在使用CustomFont类来匹配html UI中的字体样式。
此代码不接受英语以外的语言,例如。 वायुसेना
它只是在图像上写下方框