1.linux安装字体
以微软雅黑为例,找到msyh.ttf ,copy至下面的文件夹
usr/share/fonts/msyh
执行命令:fc-cache -fv
重启jvm即可2.drawString 部分代码private static BufferedImage drawString(int type, boolean isWhite,
int width, int height, String price, Font font_money, Font font,
Graphics2D g2d, Rectangle2D bounds, Rectangle2D bounds_money) {
BufferedImage image;
//透明背景
image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
g2d.dispose();
g2d = image.createGraphics();
//反锯齿字体
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
if(!isWhite){
//非白字
g2d.setColor(new Color(236,0,137));
}else{
//白字
g2d.setColor(new Color(255,255,255));
}
//字体居中
double y = (height - bounds.getHeight()) / 2;
double ascent = -bounds.getY();
double baseY = y + ascent;
g2d.setStroke(new BasicStroke(1));
g2d.setFont(font_money);
g2d.drawString(FONT_RMB_CHAR, -2, (int)baseY);
g2d.setFont(font);
g2d.drawString(price, (int)bounds_money.getWidth()-4, (int)baseY);
g2d.dispose();
return image;
}
3.如果需要根据字符串的长度生成图片的宽度,可以使用如下方法
Rectangle2D bounds = font.getStringBounds(price, context);
width = (int)(bounds.getWidth();
4.批量生成,使用java自带的线程池,并使用CompletionService,目的是在线程处理结束后得到生成成功的ProductId
public boolean generateImagesBatch(){
boolean flag=true;
ExecutorService exec = Executors.newFixedThreadPool(8);
CompletionService<CallBack> completionService=
new ExecutorCompletionService<CallBack>(exec);
long startTime=System.currentTimeMillis();
String sql="select productId,price from prod";
List<Map> skuList = this.cmsJdbcTemplate.queryForList(sql);
for(Map map:skuList){
String prodId=((BigDecimal)map.get("productId")).toString();
double price=((BigDecimal)map.get("price")).doubleValue();
completionService.submit(new CreateImageConcurrent(prodId,price,FontEnum.ONE,false));
completionService.submit(new CreateImageConcurrent(prodId,price,FontEnum.TWO,false)); }
long endTime=System.currentTimeMillis()-startTime;
log.info("query db time>>>>>>>>>>>>>>"+endTime/1000);
Future<CallBack> future;
int count=skuList.size()*6;
log.info("generateImagesBatch count:"+count);
try {
while(count>0){
future = completionService.take();
CallBack callBack = future.get();
if(null!=callBack){
count--; log.info("generateImagesBatch prod id:"+callBack.getSuccesMessage()); }
}
endTime=System.currentTimeMillis()-startTime;
log.info("create images time>>>>>>>>>>>>>>"+endTime/1000);
log.info("generateImagesBatch success!");
flag=true;
} catch (ExecutionException e) {
flag=false;
log.error("generateImagesBatch fail::ExecutionException::"+e.getMessage());
} catch (InterruptedException e) {
flag=false;
log.error("generateImagesBatch fail::InterruptedException::"+e.getMessage());
}finally{
exec.shutdown();
}
return flag;
}
分享到:
相关推荐
java 根据配置文件,批量生成图片,
最新功能支持导入码内容文件批量生成二维码,支持生成带中国二维码注册解析中心(IDcode)认证的二维码。 运行方式:1、在项目上右击 运行java程序,入口在com.fiwan.qrgenerator.GeneratorForm 2、打jar包 java -...
按公司的要求自己测试好久才整出来的,好用,给大家共享一下,有什么问题可以问我
java:html生成图片,所有生成方法的优缺点。
最新功能支持导入码内容文件批量生成二维码,支持生成带中国二维码注册解析中心(IDcode)认证的二维码。 运行方式:1、在项目上右击 运行java程序,入口在com.fiwan.qrgenerator.GeneratorForm 2、打jar包 java -...
code下载部署说明 以上是周末自己编写的小案例,供大家参考。 环境:myeclipse8.5 + tomcat6 + jdk7 + core-3.3.0.jar(google zxing)
从ueditor中把批量上传图片的flash分离出来,同时实现生成缩略图
只需要安装oracle client在本地,然后配置好tns,输入连接名,用户名,密码,数据表的名称,文件名数据列名以及blob数据列名,就可以批量导出ORACLE数据库BLOB字段生成图片
主要为大家详细介绍了java后台批量下载文件并压缩成zip下载的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
java实现二维码生成的几个方法,文中分析二维码的生成原理,编码方式及二维码的解析方式。
功能介绍: 可以通过页面上传Excel表格,批量生成二维码,并下载生成二维码图片。
生成后的二维码,用360的扫一扫或者微信的扫一扫后,自动形成一个用户的名片身份, 可以直接保存到手机通讯录中, 非常方便。 包含的名片信息: 姓名+手机+电话+邮箱+网址+公司+地址。
对图片进行水印处理,利用TESS4J识别图片并提取信息生成excel表格。里面有字库文件所以占用空间较大。 说明:https://blog.csdn.net/xlantian/article/details/80789115
java 使用poi根据模版导出word文件 将文件中的标签替换成文字或者文件 文件中标签用{xxxx}生成新文件
批量下载文件包括图片, mp3等, 生成压缩包 java 工具
使用jspsmartupload实现图片的批量上传,并保存到服务器的指定路径,自动生成缩略图,与图片的路径相同。(需要导入jspsmartupload.jar,在工程下的WebContent\WEB-INF\lib中 )
Java生成名片式的二维码源码
主要介绍了Java后台批量生产echarts图表并保存图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
帮企业做网站,经常遇到有N多图片要加的,一张张浏览添加要N久,所以做了一个批量上传的功能。也拿来共享(马云说,世界是由懒人创造的) 功能:可自动将原始图片(未经裁剪的原始图片)自动生成一个规定大小的缩略...
基于Java的二维码生成工具源代码,支持自定义二维码内容、内嵌图片、批量生成二维码 带字二维码项目在font-qrcode子工程下,原普通二维码项目在 common-qrcode 子工程下(JDK 8)