`

将html页面转换成图片

 
阅读更多

问题分析:需要根据用户选择的不同游戏,不同年份来生成带有不同描述规则的一张图片,如果利用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网页转换成图片保存到本地

    本主题聚焦于一个特定的C#应用:如何将指定的HTML网页转换为图片并保存到本地。这个功能在很多场景下都非常实用,比如网页快照、网页预览或者在没有浏览器环境下展示网页内容。 首先,实现这一功能需要了解几个关键...

    将HTML页面转成图片JPG

    标题中的“将HTML页面转成图片JPG”指的是将HTML文档转换为静态的图像文件,这一过程在多种场景下非常有用,例如网页存档、社交媒体分享或者自动化报告生成。这个技术涉及到了HTML解析、渲染以及图像处理等多个领域...

    java实现html文件转换成图片

    本代码实现html文件转换成一个图片的功能。附件包含所需要的包。 注:该代码转换的html文件必须一个屏幕能展现出来的,如果内容太多一个屏幕展现不出来则不能很好的转换。所以该代码只适用于内容不太多的html文件。...

    html2canvas.js 将网页转换成canvas然后生成图片

    &lt;p&gt;11111111111 &lt;p&gt;11111111111 &lt;p&gt;11111111111 &lt;p&gt;11111111111 &lt;p&gt;11111111111 &lt;p&gt;11111111111 &lt;p&gt;11111111111 [removed] ... $("body").append('下载的图片"&gt;保存图片&lt;/a&gt;'); }); [removed]

    C#实现HTML页面转jpg图片格式

    在IT领域,将HTML页面转换为jpg图片格式的需求经常出现,比如用于网页快照、页面预览或无浏览器环境下的内容展示。C#作为一种强大的编程语言,提供了多种方法来实现这个功能。本项目名为"C#实现HTML页面转jpg图片...

    ASP.NET实现网页快照(C#生成网页截图 将指定html网页转换成图片保存到本地)(源代码)

    在这个特定的场景中,我们关注的是如何使用C#编程语言在ASP.NET环境中实现一个网页快照的功能,即将一个指定的HTML网页转换为图片并保存到本地。 网页快照,也被称为网页截屏或网页捕获,是将一个网页的视觉表现...

    将html网页转成图片格式

    ### 将HTML网页转换为图片格式的技术实现 在IT领域,特别是前端开发和后端处理过程中,有时我们需要将一个HTML网页快速转化为一张图片,这样的需求常见于网站快照、页面预览图等应用场景。本文主要介绍如何利用C#...

    C#生成网页截图 C#将网页内容转换成图片保存到本地( webbrowser 可应用于B/S结构中)

    在IT领域,尤其是在Web开发中,有时候我们需要将网页内容转换为图片以便于分享、存档或者展示。在.NET框架下,C#语言提供了一个强大的控件——`WebBrowser`,可以实现这样的功能。本篇文章将深入探讨如何使用C#的`...

    html页面转换为图片

    HTML页面转换为图片的技术在网页开发中非常有用,例如用于屏幕截图、页面预览或社交媒体分享。`html2canvas`是一个流行的JavaScript库,它能够将HTML元素渲染为Canvas,进而可以将其转换为图像格式,如JPEG、PNG或...

    c#网页转换成图片demo

    - **网页转图片**:这表明程序的主要功能是将HTML页面转化为JPEG、PNG等常见的图像格式,便于存储和分享。 - **带源码**:用户可以获取到完整的源代码,这意味着他们可以查看和修改程序的内部工作原理,根据自己的...

    java:将html生成图片的所有方法比较

    1. **Java2DPDF库转图片** - 优点:通过先将HTML渲染为PDF,然后将PDF转换为图像,这种方式可以保持较好的排版和字体效果,适合复杂的HTML结构。 - 缺点:转换过程可能较慢,且对某些CSS样式支持不全。需要额外...

    poi将word转换成html、样式 表格 图片处理

    在本案例中,我们关注的是如何使用Apache POI将Word文档转换为HTML格式,并且保持原有的样式、表格和图片。下面我们将详细介绍这个过程中的关键知识点。 1. **Apache POI简介** Apache POI 提供了Java API,使得...

    js实现html转图片并下载保存

    在JavaScript的世界里,将HTML页面转换为图片并允许用户下载保存是一种常见的需求,例如用于屏幕截图、页面预览或者数据可视化。本篇文章将详细介绍如何利用`html2canvas.js`和`canvas2image.js`这两个库来实现这个...

    使用iText-2.0.8将Html转换为pdf,带图片功能

    在版本2.0.8中,它提供了将HTML转换为PDF的功能,这对于从网页内容生成打印版或者提供离线阅读材料非常有用。这个过程涉及到多个步骤和技术,下面将详细阐述如何使用iText 2.0.8实现HTML到PDF的转换,并特别关注其中...

    C# HtmlToWord 将HTML文件转换成word文档

    本篇文章将详细探讨如何利用C#编程语言实现从HTML文件批量转换为Word文档,同时确保本地图片和链接的本地化,使得转换后的Word文档能够完整保留HTML的样式和内容。 首先,我们需要了解HTML和Word之间的主要差异。...

    PHP实现将HTML页面生成图片

    PHP实现将HTML页面生成图片

    html 页面转化成图片

    在本篇文章中,我们将深入探讨如何将HTML页面转换为图片,并讨论与之相关的技术和工具。 首先,我们来看HTML页面的基本构成。HTML(HyperText Markup Language)是一种用于创建网页的标准标记语言,它包含文本、...

    将PPT转换成HTML文件

    将PPT(PowerPoint演示文稿)转换成HTML文件是一种实用的方法,因为HTML格式支持在网页浏览器中直接打开,无需特定的应用程序。下面,我们将详细讨论这个过程,包括涉及到的工具、库以及转换的具体步骤。 首先,...

    将word文档转换成html页面文件

    标题中的“将word文档转换成html页面文件”指的是利用编程技术将Microsoft Word文档转换成HTML网页格式。在IT行业中,这种转换通常用于在线发布、网站内容编辑或数据迁移等场景。C#是一种广泛使用的编程语言,尤其在...

Global site tag (gtag.js) - Google Analytics