问题分析:需要根据用户选择的不同游戏,不同年份来生成带有不同描述规则的一张图片,如果利用java去画这张图片,显然很不靠谱,利用一些开源的图形工具,都是在原有图
片的基础上去修改,没有根据指定规则去生成的。经过调研和探讨,觉得freemarker可以定制自己想要的样式模板,如果先用freemarker定制的模板去生成一个静态的html页面,
然后再将这个html页面转换一张图片,这样做不就可以生成指定样式的图片了么,但是如何将html转换成图片呢。网上有很多写好的代码实现,但是经过测试,这些代码都无法解
析html页面的动态css样式和js,导致生成的图片和静态页面不统一,包括开源的html2image jar包,效果都不符合项目的需求。
解决方案:通过freemarker定制好的模板去生成静态页面,利用开源的wkhtmltoimage软件去截取静态页面,由于是截屏,所以会保留静态页面的所有样式。wkhtmltoimage是完
全开源免费的,安装简单,好用。
应用场景:需求上根据用户的不同行为,从而产生不用的效果图片,建议用此方法。
第一步:定制模板
根据需求制作相应的ftl模板页面,因不同需求模板样式不同,固此处省略编写。
第二部:生成静态html页面,调用wk命令生成图片
模板+数据=输出,依照这个原理,加载模板,处理数据,输出一个静态页面。
public void createSpaceImage(Configuration config) throws Throwable { //静态页面绝对路径 String htmlDirectory = ""; String imageDirectory = ""; String templatePath = ""; String htmlFileName = htmlDirectory + "/" + 文件名+".html"; String imageFileName = imageDirectory + "/" + 文件名+".png"; File htmlFile = new File(htmlFileName); if (!htmlFile.getParentFile().exists()) { htmlFile.getParentFile().mkdirs(); } if (!htmlFile.exists()) { htmlFile.createNewFile(); } File imageFile = new File(imageFileName); if (!imageFile.getParentFile().exists()) { imageFile.getParentFile().mkdirs(); } config.setNumberFormat("#"); // 根据模板和数据生成静态HTML Template template = config.getTemplate(templatePath, "UTF-8"); Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), "UTF-8")); Map<String,Object> data = new HashMap<String,Object>(); template.process(data, out); // 根据静态HTMl生成图片 htmlFileName 静态页面路径 imageFileName 图片路径 尺寸 HtmlToImage.html2Image(htmlFileName, imageFileName, 600, 400); }
方法参数需要根据实际情况进行改写,用来做数据处理。
其中html2Image方法如下:
public static void html2Image(String filePath, String targetPath, int i, int j) throws Throwable { String command = ApplicationConfig.getValue("annalsImage.command"); command = command + " --crop-w " + i + " --crop-h " + j + " " + filePath + " " + targetPath; Runtime.getRuntime().exec(command); }
上述
String command = ApplicationConfig.getValue("annalsImage.command");
其中command 是wkhtmltoimage的命令,在linux下可以接上下文路劲,也可配置环境变量。
第三步:wkhtmltoimage下载安装
(1) 下载
$wget
http://wkhtmltopdf.googlecode.com/files/wkhtmltoimage-0.11.0_rc1-static-i386.tar.bz2
or
$wget
http://wkhtmltopdf.googlecode.com/files/wkhtmltoimage-0.11.0_rc1-static-amd64.tar.bz2
注:使用 如下命令决定需要下载的版本:
$uname -a
(2) 解压安装
Wkhtmltoimage 是一个可执行文件,解压出来即可运行,解压到某个路径下后,需要配置环境变量,使该可执行文件在任意路径下调用均可用。
解压命令如下:
$tar -jxvf wkhtmltoimage-0.11.0_rc1-static-i386.tar.bz2
or
$tar -jxvf wkhtmltoimage-0.11.0_rc1-static-amd64.tar.bz2
(3) 运行
$./wkhtmltoimage-i386 www.baidu.com baidu.jpg
(4) 环境要求
保证系统字体为UTF-8,使用如下命令查看系统字体:
$at /etc/sysconfig/i18n
我的电脑的显示结果为:
LANG="zh_CN.UTF-8"
必须安装 glibc 和 openssl
必须安装 x11 以及 正确的 x11 fonts
使用如下命令:
rpm -qa|grep x11
需要安装的字体:
xorg-x11-font-utils-...
xorg-x11-fonts-Type1-...
xorg-x11-fonts-chinese-…
安装成功之后,就可以用以上方式将html页面转换成图片啦。
相关推荐
本主题聚焦于一个特定的C#应用:如何将指定的HTML网页转换为图片并保存到本地。这个功能在很多场景下都非常实用,比如网页快照、网页预览或者在没有浏览器环境下展示网页内容。 首先,实现这一功能需要了解几个关键...
标题中的“将HTML页面转成图片JPG”指的是将HTML文档转换为静态的图像文件,这一过程在多种场景下非常有用,例如网页存档、社交媒体分享或者自动化报告生成。这个技术涉及到了HTML解析、渲染以及图像处理等多个领域...
本代码实现html文件转换成一个图片的功能。附件包含所需要的包。 注:该代码转换的html文件必须一个屏幕能展现出来的,如果内容太多一个屏幕展现不出来则不能很好的转换。所以该代码只适用于内容不太多的html文件。...
<p>11111111111 <p>11111111111 <p>11111111111 <p>11111111111 <p>11111111111 <p>11111111111 <p>11111111111 [removed] ... $("body").append('下载的图片">保存图片</a>'); }); [removed]
在IT领域,将HTML页面转换为jpg图片格式的需求经常出现,比如用于网页快照、页面预览或无浏览器环境下的内容展示。C#作为一种强大的编程语言,提供了多种方法来实现这个功能。本项目名为"C#实现HTML页面转jpg图片...
在这个特定的场景中,我们关注的是如何使用C#编程语言在ASP.NET环境中实现一个网页快照的功能,即将一个指定的HTML网页转换为图片并保存到本地。 网页快照,也被称为网页截屏或网页捕获,是将一个网页的视觉表现...
### 将HTML网页转换为图片格式的技术实现 在IT领域,特别是前端开发和后端处理过程中,有时我们需要将一个HTML网页快速转化为一张图片,这样的需求常见于网站快照、页面预览图等应用场景。本文主要介绍如何利用C#...
在IT领域,尤其是在Web开发中,有时候我们需要将网页内容转换为图片以便于分享、存档或者展示。在.NET框架下,C#语言提供了一个强大的控件——`WebBrowser`,可以实现这样的功能。本篇文章将深入探讨如何使用C#的`...
HTML页面转换为图片的技术在网页开发中非常有用,例如用于屏幕截图、页面预览或社交媒体分享。`html2canvas`是一个流行的JavaScript库,它能够将HTML元素渲染为Canvas,进而可以将其转换为图像格式,如JPEG、PNG或...
- **网页转图片**:这表明程序的主要功能是将HTML页面转化为JPEG、PNG等常见的图像格式,便于存储和分享。 - **带源码**:用户可以获取到完整的源代码,这意味着他们可以查看和修改程序的内部工作原理,根据自己的...
1. **Java2DPDF库转图片** - 优点:通过先将HTML渲染为PDF,然后将PDF转换为图像,这种方式可以保持较好的排版和字体效果,适合复杂的HTML结构。 - 缺点:转换过程可能较慢,且对某些CSS样式支持不全。需要额外...
在本案例中,我们关注的是如何使用Apache POI将Word文档转换为HTML格式,并且保持原有的样式、表格和图片。下面我们将详细介绍这个过程中的关键知识点。 1. **Apache POI简介** Apache POI 提供了Java API,使得...
在JavaScript的世界里,将HTML页面转换为图片并允许用户下载保存是一种常见的需求,例如用于屏幕截图、页面预览或者数据可视化。本篇文章将详细介绍如何利用`html2canvas.js`和`canvas2image.js`这两个库来实现这个...
在版本2.0.8中,它提供了将HTML转换为PDF的功能,这对于从网页内容生成打印版或者提供离线阅读材料非常有用。这个过程涉及到多个步骤和技术,下面将详细阐述如何使用iText 2.0.8实现HTML到PDF的转换,并特别关注其中...
本篇文章将详细探讨如何利用C#编程语言实现从HTML文件批量转换为Word文档,同时确保本地图片和链接的本地化,使得转换后的Word文档能够完整保留HTML的样式和内容。 首先,我们需要了解HTML和Word之间的主要差异。...
PHP实现将HTML页面生成图片
在本篇文章中,我们将深入探讨如何将HTML页面转换为图片,并讨论与之相关的技术和工具。 首先,我们来看HTML页面的基本构成。HTML(HyperText Markup Language)是一种用于创建网页的标准标记语言,它包含文本、...
将PPT(PowerPoint演示文稿)转换成HTML文件是一种实用的方法,因为HTML格式支持在网页浏览器中直接打开,无需特定的应用程序。下面,我们将详细讨论这个过程,包括涉及到的工具、库以及转换的具体步骤。 首先,...
标题中的“将word文档转换成html页面文件”指的是利用编程技术将Microsoft Word文档转换成HTML网页格式。在IT行业中,这种转换通常用于在线发布、网站内容编辑或数据迁移等场景。C#是一种广泛使用的编程语言,尤其在...