public static byte[] createEmfTag(String sRand) throws Exception{
Random random = new Random();// 创建一个随机类
Vector<EMFTag> emf = new Vector<EMFTag>();
// 创建边框
RoundRect rr=new RoundRect(new Rectangle(10, 10, 119, 59) ,new Dimension(1,1));
emf.add(rr);
// 创建字体,字体的大小应该根据图片的高度来定。
// LogFontW font = new LogFontW(-82, 0, 0, 0, 0, false, true, false,0, 3, 2, 1, 0x22, "Times New Roman");
// Panose panose = new Panose();
// ExtLogFontW extFont = new ExtLogFontW(font, "", "", 0, 0, 0, new byte[] {0, 0, 0, 0}, 0, panose);
// ExtCreateFontIndirectW ecfi=new ExtCreateFontIndirectW(1,extFont);
// emf.add(ecfi);
// 设置文字的颜色
SetTextColor st=new SetTextColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
emf.add(st);
//设置验证码
TextW tw=new TextW(new Point(20, 30),sRand, 0, new Rectangle(1, 1, 11, 5), new int[] { 30, 30, 30, 0, 0 });
emf.add(new ExtTextOutW(new Rectangle(0,0,120,60), 2, 120, 60, tw));
//随机加入10条干扰线
for (int i = 0; i < 10; i++) {
LineTo lt=new LineTo(new Point(random.nextInt(150),random.nextInt(80)));
emf.add(lt);
}
//随机产生100个干扰点
for (int i = 0; i < 100; i++) {
emf.add(new SetPixelV(new Point(random.nextInt(120),random.nextInt(60)),getRandColor(160, 200)));
}
emf.add(new EOF());
ByteArrayOutputStream os = new ByteArrayOutputStream();
try{
EMFOutputStream out = new EMFOutputStream(os, new Rectangle(10, 10, 119, 59),
new EMFHandleManager(), "", "", new Dimension(120, 60));
for (int i = 0; i < emf.size(); i++) {
out.writeTag((org.freehep.util.io.Tag)emf.get(i));
}
out.close();
return os.toByteArray();
}catch(Exception ex){
throw ex;
}finally{
if (os != null)
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static Color getRandColor(int lower, int upper) {
Random random = new Random();
if (upper > 255)
upper = 255;
if (upper < 1)
upper = 1;
if (lower < 1)
lower = 1;
if (lower > 255)
lower = 255;
int r = lower + random.nextInt(upper - lower);
int g = lower + random.nextInt(upper - lower);
int b = lower + random.nextInt(upper - lower);
return new Color(r, g, b);
}
分享到:
相关推荐
使用freehep将EMF转换为png,项目下载导入eclipse即可运行。
包含3个文件: 微软emf文件格式详解.pdf emf.hlp (Enhanced Metafiles in Win32) emfexplorer_src.zip
微软EMF文件格式-英文版 微软EMF文件格式-英文版
文件格式 EMF (Enhanced MetaFile) ——是在印刷工业中应用与Windows操作系统的文件格式。实际上EMF是原始WMF(Windows metafile)格式的32位版本。EMF格式的产生是为了解决WMF在印刷行业中的不足。EMF是设备独立性...
把可Office的EMF格式转化为eps格式的精悍利器,赞一个……
Delphi将jpg、bmp、wmf格式转换为emf格式.rar
PPT用图EMF格式675个。这个很好的用在教学或者讲课上面是非常有用的。谢谢大家的支持,谢谢下载
可以后台启动pdf、execl、word等程序截取首屏并生产emf图片
EMF图片转为JPG/PNG 需安装GraphicsMagick 提供实例代码
将打印机临时缓存文件SPL转为图片文件EMF
EMF读取XML
此格式是对“Windows 图元文件格式”的改进,包含了一些扩展功能,例如,下面的功能:内置的缩放比例信息 · 与文件一起保存的内置说明 调色板和设备独立性方面的改进EMF 格式是可扩展的格式,这意味着程序员可以...
按道理emf图片不应该失真的。可以由pdf虚拟打印出的emf图片不在100%比例显示的时候就失真,由doc虚拟打印出来的emf就没有同样问题.
矢量格式转换程序,基于JAVA实现的SVG转EMF的的示例代码,下载后导入到eclipse即可运行。
EMF和BMP文件格式的相互转换:BOOL CConvertEMFToBMP::ConvertBMPToEMF(const char*pszBMPFile,const char* pszEMFFile)
emf转bmpemf
Delphi emf图片格式转换程序,单击【Convert】按钮实现转换,可设置转换后emf文件大小,关键点:通过画图实现转换,你知道么?最后显示和保存转换结果。从示例截图看上去,转换后的效果一样,但是文件格式已经改变,...
emf抗锯齿转bmp,支持自定义尺寸,scale等
微软的EMF specification,研究EMF文件格式必读。
EMF图片转PNG图片