`
leobluewing
  • 浏览: 240946 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

html2canvas 截屏后上传到服务器端(springmvc3)

阅读更多
利用html2canvas截屏后可以生成base64类型的图片,但是这样的图片很明显不能被引用或者被SNS工具来分享。这样就必须截屏后再上传数据到后台服务器端重新保存。

前端js代码:

 $("#saveImage").click(function() {
					html2canvas($('#mypics'), {
						onrendered : function(canvas) {
							var myImage = canvas.toDataURL("image/jpeg");
							//并将图片上传到服务器用作图片分享
							$.ajax({
								type : "POST",
								url : '${ctx}/qsupload',
								data : {data:myImage},
								timeout : 60000,
								success : function(data){
									$('#myShowImage').attr('src', '${ctxStatic}/usertemp/'+data+'.jpg'); //服务器上保存图片路径,data是返回的文件名。
								}
							});
						}
					});
				});


后端代码


import org.apache.commons.codec.binary.Base64;

@RequestMapping(value = { "${frontPath}/qsupload" }, method = { RequestMethod.POST })
	@ResponseBody
	public String petUpgradeTarget(HttpServletRequest request, String data) {
		String serverPath = request.getSession().getServletContext()
				.getRealPath("/");
		Base64 base64 = new Base64();
		try {

      //注意点:实际的图片数据是从 data:image/jpeg;base64, 后开始的
			byte[] k = base64.decode(data.substring("data:image/jpeg;base64,"
					.length()));
			InputStream is = new ByteArrayInputStream(k);
			String fileName = UUID.randomUUID().toString();
			String imgFilePath = serverPath + "\\static\\usertemp\\" + fileName + ".jpg";

                       //以下其实可以忽略,将图片压缩处理了一下,可以小一点

			double ratio = 1.0;
			BufferedImage image = ImageIO.read(is);
			int newWidth = (int) (image.getWidth() * ratio);
			int newHeight = (int) (image.getHeight() * ratio);
			Image newimage = image.getScaledInstance(newWidth, newHeight,
			Image.SCALE_SMOOTH);
			BufferedImage tag = new BufferedImage(newWidth, newHeight,
					BufferedImage.TYPE_INT_RGB);
			Graphics g = tag.getGraphics();
			g.drawImage(newimage, 0, 0, null);
			g.dispose();
			ImageIO.write(tag, "jpg", new File(imgFilePath));
			return fileName;
		} catch (Exception e) {
			return "error";
		}
	}

分享到:
评论
3 楼 fanglei613 2017-01-18  
LZ的头像是国見比呂

顺便问一下 html2canvas是异步请求的,这个有办法变成同步吗
2 楼 leobluewing 2015-03-02  
小丑皇吃巧克力 写道
请问 图片黑色遮罩是怎么回事 啊?

应该是html2canvas本身的bug
1 楼 小丑皇吃巧克力 2015-02-26  
请问 图片黑色遮罩是怎么回事 啊?

相关推荐

    html2Canvas截图加demo

    这个工具对于网页开发者来说非常有用,因为它允许用户在不借助服务器端处理的情况下实现网页的截图功能。在给定的"html2Canvas-demo-master"压缩包中,很可能包含了html2Canvas库的源码以及一些示例代码,帮助开发者...

    html2canvas(兼容截图svg元素)

    这个库的主要用途是实现用户在浏览器上对网页内容进行截屏,无需服务器端的参与,提高了用户体验和交互性。 然而,`html2canvas`并非完美无缺,特别是在处理SVG(可缩放矢量图形)元素时,会遇到一些挑战。SVG是一...

    解决htmlcanvas手机无法截图或者截图不全的问题

    1. **CSS3 Transformations**:当HTML元素使用了CSS3的transform属性(如translate、rotate、scale等)时,html2canvas可能无法正确地捕获变换后的元素。 2. **Z-Index和层叠上下文**:如果元素在页面上的堆叠顺序...

    html2canvas实现js截图+模拟摄像头拍照

    通过这个库,开发者可以在用户的浏览器上直接生成基于当前DOM结构的图片,无需服务器端参与,极大地提高了用户体验和效率。 `html2canvas` 的工作原理大致如下: 1. 遍历DOM树,将每个元素转换为Canvas上的图形。 2...

    vue 使用 html2canvas 截屏并下载图片至本地(重点兼容ie浏览器)

    在Vue项目中,有时我们需要实现页面截屏并下载图片到本地的功能,特别是在处理用户交互或者数据分析时。HTML2Canvas是一个非常实用的JavaScript库,它能够将HTML元素转换为Canvas,进而可以导出为图片。然而,这个...

    html2canvas生成图片案例

    此外,为了处理跨域图片,你需要在服务器端设置CORS策略,允许html2canvas访问。如果图片资源是动态生成的,还可以考虑使用base64编码或者Blob对象来绕过跨域限制。 在实际项目中,你可以根据需求对html2canvas的...

    html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片

    它不依赖于服务器端的渲染,完全在客户端完成,这对需要截图网页或网页元素的场景非常有用。html2canvas支持各种浏览器,包括Firefox 3.5+、Google Chrome、Opera的更新版本以及IE9以上的浏览器。 在使用...

    html2canvas(1.0.0)

    2. **图片跨域**:如果HTML中包含跨域图片,需要服务器端设置CORS策略,否则html2canvas可能无法加载图片。 3. **性能优化**:对于大型复杂的页面,可以通过分块渲染、延迟加载等方式提高性能。 五、应用场景 ...

    html2canvas.zip

    它不依赖于任何服务器端的技术,而是完全在客户端运行,这使得它在实时生成和交互式应用中非常高效。 HTML2Canvas提供以下主要特性: 1. **DOM渲染到Canvas**:它可以将HTML元素,包括文本、图片、样式等,全部转换...

    html2canvas将HTML内容写入Canvas生成图片 uniapp

    在uniAPP这个跨平台的移动应用开发框架中,html2canvas可以发挥类似的作用,帮助开发者在APP端实现截取页面内容的功能。 1. **html2canvas工作原理**: - html2canvas首先会遍历DOM树,获取每个元素的样式信息,...

    html2canvas实现将dom生成图片并保存至本地

    3. 处理结果:html2canvas返回一个Promise对象,当截图完成时,可以通过`.then`方法获取到生成的Canvas元素。你可以将Canvas转换为图片(DataURL),然后设置为img元素的src,或者直接下载。 ```javascript canvas....

    HTML2canvas截图

    HTML2canvas是一个JavaScript库,它允许开发者在浏览器中将HTML内容转换为Canvas图像,进而可以进行截图操作。这个工具在Web开发中非常有用,因为HTML页面通常包含丰富的文本、图片和其他元素,而直接通过浏览器的...

    canvas截屏

    - 使用`toDataURL()`方法生成截图的data URL,可以进一步转化为Blob对象,通过FileReader或fetch API下载或者上传服务器。 - 如果需要截取整个页面,可以利用`window.scrollTo()`和多次canvas绘图来实现分块截取,...

    html2canvas.js 下载

    这个过程完全在浏览器端完成,无需服务器参与,因此具有较高的隐私保护和实时性。 html2canvas的优势在于其易用性和灵活性。开发者只需要在网页中引入html2canvas.js或者html2canvas.min.js(压缩版),通过简单的...

    html2canvas 网页截图示例

    **html2canvas网页截图技术详解** html2canvas是一款强大的JavaScript库,它允许开发者在前端将HTML页面或DOM元素转换为Canvas图像,进而可以进一步转化为图片(如JPEG、PNG)。这项技术在网页应用中广泛用于实现...

    html2canvas 网页对图片加水印

    4. **调用HTML2Canvas**:使用HTML2Canvas API将包含水印的整个页面或特定元素渲染到Canvas上。然后,你可以将Canvas转换为图片。例如: ```javascript html2canvas(document.getElementById('watermark-image'), ...

    html2canvas-0.4.1

    《html2canvas:网页元素截图神器》 html2canvas是一个非常实用的JavaScript库,它的主要功能是将HTML页面或者特定的DOM元素转换为Canvas图像,进而可以导出为图片格式,如JPEG、PNG等。这个工具在Web开发中有着...

    使用html2canvas库实现的简单截图功能

    然而,html2canvas并不完美,它存在一些限制和已知问题,例如处理透明度、CSS3渐变、阴影等高级特性时可能表现不佳。此外,由于它是基于渲染的,所以可能会比浏览器原生的`toDataURL`慢一些。对于更复杂的截图需求,...

    html2canvas-rc4.js和html2canvas.min.js

    3. **使用条件逻辑**:在代码中检测用户的浏览器和操作系统,然后根据情况选择使用HTML2canvas或其他备用方法。 4. **使用替代库**:如果HTML2canvas在特定环境下不可行,可以考虑其他类似的库,如Puppeteer(需要...

    html2canvas.js

    4. 处理结果:当截屏完成,html2canvas会返回一个Promise对象,通过`.then()`方法可以获取到Canvas元素,进一步可以将其转换为图片并下载或展示。 三、示例代码 ```javascript html2canvas(document.body).then...

Global site tag (gtag.js) - Google Analytics