使用graphics2D给图片上画字符
//读取图片
BufferedImage frontImage = ImageIO.read(name));
Graphics2D frontG = frontImage.createGraphics();
frontG.dispose();
frontImage.flush();
//给图片画数据,eCardForm为图片中fields的模板类
private void setFormInformation(eCardForm eForm, Graphics2D g, DataSet ds)throws IOException{
Font plainFont = new Font(eForm.getFontType(), Font.LAYOUT_LEFT_TO_RIGHT, eForm.getFontSize());
String drawString = null ;
if(TypeChecker.isTrue(eForm.isConstant())){
drawString = eForm.getValue().trim();
}
else{
try{
drawString = ds.getString(eForm.getValue()).trim();
}
catch(Exception e){
return ;
}
} //check value
if(TypeChecker.isEmpty(drawString)){
return ;
} if(TypeChecker.isTrue(eForm.getImage()) ) {
if(TypeChecker.isTrue(drawString)){
String eCardColor = ds.getString("CARDCOLOR");
String MedpassLogo = eCardXMLConfigManager.geteCardXMLConfigManager().getRealPath()+ "/com."+suffix ;
if(!TypeChecker.isEmpty(eCardColor) && eCardColor.equalsIgnoreCase("eCARDCOLOR.Red")){
MedpassLogo = eCardXMLConfigManager.geteCardXMLConfigManager().getRealPath()+ "/com."+suffix ;
}
Image imagewritted = ImageIO.read(new File(MedpassLogo));
g.drawImage(imagewritted,eForm.getxPosition(), eForm.getyPosition(), eForm.getWidth(), eForm.getHeight(), null, null);
}
return ;
} //color
g.setColor(Color.BLACK);
if(TypeChecker.isEmpty(eForm.getColor())){
if(eForm.getColor().equals("red")){
g.setColor(Color.BLACK);
}
else if(eForm.getColor().equals("blue")){
g.setColor(Color.BLUE);
}
else if(eForm.getColor().equals("gray")){
g.setColor(Color.GRAY);
}
else if(eForm.getColor().equals("yellow")){
g.setColor(Color.YELLOW);
}
else if(eForm.getColor().equals("dark_gray")){
g.setColor(Color.DARK_GRAY);
}
else if(eForm.getColor().equals("pink")){
g.setColor(Color.PINK);
}
} AttributedString as = new AttributedString(drawString);
as.addAttribute(TextAttribute.FONT, plainFont);
//设置加黑加粗属性weight,一直无法生效,没找到原因。
if(TypeChecker.isTrue(eForm.isBold())){
g.setFont(plainFont);
Font boldFont = new Font(eForm.getFontType(), Font.BOLD, eForm.getFontSize());
as.addAttribute(TextAttribute.FONT, boldFont);
as.addAttribute(TextAttribute.WEIGHT, TextAttribute.WEIGHT_LIGHT);
//as.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
}
if(TypeChecker.isTrue(eForm.isAlignRight())){
as.addAttribute(TextAttribute.RUN_DIRECTION, TextAttribute.RUN_DIRECTION_RTL);
}
else{
as.addAttribute(TextAttribute.RUN_DIRECTION, TextAttribute.RUN_DIRECTION_LTR);
}
if(TypeChecker.isTrue(eForm.isUnderLine())){
as.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
} //as.addAttribute(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON, 18, 25);
int xPos = eForm.getxPosition();
//左右对齐
if(TypeChecker.isTrue(eForm.isAlignRight())){
g.setFont(plainFont);
FontMetrics fm = g.getFontMetrics();
Rectangle2D rc = fm.getStringBounds(drawString.trim(), g);
xPos = eForm.getxPosition() - (int)(rc.getWidth());
if(xPos < 0 ){
xPos = 0;
}
}
//居中
if(TypeChecker.isTrue(eForm.isAlignCenter())){
g.setFont(plainFont);
FontMetrics fm = g.getFontMetrics();
Rectangle2D rc = fm.getStringBounds(drawString.trim(), g);
xPos = Math.round((1130-(int)(rc.getWidth()))/2);
if(xPos < 0 ){
xPos = 0;
}
} int yxPos = eForm.getyPosition(); g.drawString(as.getIterator(), xPos, yxPos); }
此方法主要是往图片的相应位置画数据。
使用graphics2D给图片上画字符的更多相关文章
- 在图片上加字符-base64转图片-图片转base64
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- HTML5将图片转化成字符画
HTML5将图片转化成字符画 字符画大家一定非常熟悉了,那么如何把一张现有的图片转成字符画呢?HTML5让这个可能变成了现实,通过canvas,可以很轻松实现这个功能.其实原理很简单:扫描图片相应位置 ...
- 基于 canvas 将图片转化成字符画
字符画大家一定非常熟悉了,那么如何把一张现有的图片转成字符画呢? HTML5 让这个可能变成了现实,通过 canvas,可以很轻松实现这个功能. 其实原理很简单:扫描图片相应位置的像素点,再计算出其灰 ...
- 将图片转为ASCII字符画
原文:将图片转为ASCII字符画 Copyright 2012 Conmajia 源代码下载:点击这里 什么是字符画?就是用ASCII字符来近似组成图像,就像这样: ╭╮ ╭╮ ││ ││ ╭┴┴—— ...
- python 图片在线转字符画预览
文章链接:https://mp.weixin.qq.com/s/yiFOmljhyalE8ssAgwo6Jw 关于python图片转字符画,相信大家都不陌生,经常出现在 n个超有趣的python项目中 ...
- 基于canvas将图片转化成字符画
字符画大家一定非常熟悉了,那么如何把一张现有的图片转成字符画呢?HTML5让这个可能变成了现实,通过canvas,可以很轻松实现这个功能.其实原理很简单:扫描图片相应位置的像素点,再计算出其灰度值,根 ...
- Java实现把图片转成字符画
1,先看效果图:
- Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解
Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全 Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...
- wxWidgets学习笔记——在屏幕上画简单的图形和文字
在屏幕上画简单图形和显示图片.处理简单鼠标键盘事件 /*************************************************************** * Name: M ...
随机推荐
- Linux命令行及Vim简单学习记录
Linux命令行 1.打开命令行 Ctrl+Alt+t 2.目录 显示当前目录的文件列表 ls 跳转至当前目录中的x文件夹 cd x 返回根目录 cd 3.文件 新建文件1.cpp touch ./1 ...
- sql server 2005+ 行转列
)) , 'aa') , 'bb') , 'aaa') , 'bbb') , 'ccc') go , , '') from tb group by id
- Android4.0 -- UI控件之 Menu 菜单的的使用(三)
上一讲 [Android 开发]:UI控件之 Menu 菜单的的使用(二) 我们讲解了创建上下文菜单的第一种使用方式:Creating a floating context menu [创建悬浮的上下 ...
- HDU-2550 百步穿杨
百步穿杨 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- PHPcurl抓取AJAX异步内容(转载)
PHPcurl抓取AJAX异步内容 其实抓ajax异步内容的页面和抓普通的页面区别不大.ajax只不过是做了一次异步的http请求,只要使用firebug类似的工具,找到请求的后端服务url和传值的参 ...
- 三大跨平台网盘--dropbox
背景介绍 Dropbox是一个提供同步本地文件的网络存储在线应用.支持在多台电脑多种操作中自动同步.并可当作大容量的网络硬盘使用. 准备工作 帐号--dropbox官网 软件--windows/ubu ...
- 关于yuv 的pack(紧缩格式)和planner(平面格式)格式 [转]
关于yuv 格式 YUV 格式通常有两大类:打包(packed)格式和平面(planar)格式.前者将 YUV 分量存放在同一个数组中,通常是几个相邻的像素组成一个宏像素(macro-pixel);而 ...
- 为什么用 Java:一个 Python 程序员告诉你
这篇文章专门给程序员写的,普通读者慎入.原作者:Kevin Sookocheff 译者:Celia Zhen,原文点击文末链接. 每当我告诉别人我一直在用Java工作时,大家的反应都是: “纳尼!Ja ...
- seq命令
seq 5 seq 5 >1.txt 其中的>是覆盖 seq 1 5 用来产生从数1到数5之间的所有整数 或, seq 5
- 1116 HTML CSS
1. JPEG和GIF在使用时的注意事项: JPEG可以连续调次(复制品中有中间层次,如照片)图像中获得最好效果:JPEG可以用1600万色显示图像,是有损格式,不支持透明. GIF适用于几种纯色组成 ...