使用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 ...
随机推荐
- 牛刀小试、用SharePoint 实现请假管理功能
转:http://www.cr173.com/html/15518_1.html "请假管理"应用,应该算是 SharePoint 的"Hello World!" ...
- SharePoint 2010 安装简介及相关补丁下载
转:http://www.cnblogs.com/jianyus/archive/2011/10/28/2228212.html 1.安装Windows Server 2008 系统,这个我就不说了, ...
- ubuntu相关软件合集(持续更新中)
本人使用的是Ubuntu-Kylin14.04,自带了日历.输入法.优客助手等易于上手的应用.省的每次安装完原生的系统再麻烦的安装,下面介绍默认应用外的相关常用软件: 一.Keylock Applic ...
- ldr指令总结
LDR/STR字和无符号字节加载/存储 1,LDR Rd,[Rn] 2, LDR Rd,[Rn,Flexoffset] 3, LDR Rd,[Rn],Flexoffset 4, LDR Rd,la ...
- 在Ubuntu 中安装eclipse, eclipse 文件已经下载好!
If you've downloaded Eclipse from their official website, follow these steps for the installation. E ...
- extjs的button控件fireEvent('click')无效问题
extjs的button控件fireEvent('click')无效问题 2012-06-06 16:39 891人阅读 评论(0) 收藏 举报 extjsbuttoncallbackfunction ...
- Java中static和final的区别
static是静态修饰关键字,可以修饰变量和程序块以及类方法: 当定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向这一个地址而不会重新分配内存: 当修饰一个程序 ...
- Bash For Loop Examples
How do I use bash for loop to repeat certain task under Linux / UNIX operating system? How do I set ...
- Yii2 behavior运用
class ReturnDataTypeBehaviors extends Behavior { public $type = 'json'; public $pcOrMobile = 'pc'; / ...
- Java分布式优秀资源集合
这里充分尊重原作者的版本,学习了知识要感激原博主 Runnable.Callable.Executor.Future.FutureTask关系解读 http://blog.csdn.net/zhang ...