canvas前端压缩图片和视频首屏缩略图并上传到服务器
图片:
var img = document.createElement('img')
img.src = window.URL.createObjectURL(fileObj.file)
// 加载图片成功
img.onload = function() {
var canvas = document.createElement('canvas')
var context = canvas.getContext('2d')
// 清除画布
canvas.width = size
canvas.height = size
context.clearRect(0, 0, size, size)
// 图片压缩
context.drawImage(img, 0, 0, size, size)
// canvas转为blob并上传
canvas.toBlob(function(blob) {
// 创建forme
var xhr = new XMLHttpRequest()
xhr.open('PUT', uploadSrc)// 注意跨域问题
xhr.send(blob)
xhr.onerror = function() {
return
}
}, 'image/png')
}
size为自定义的大小,决定缩略图的大小。
createObjectURL方法后面传入的是文件对象,这里为图片的文件 video缩略图:
var video = document.createElement('video')
video.src = window.URL.createObjectURL(fileObj.file)
// 加载图片成功
setTimeout(function () {
var canvas = document.createElement('canvas')
var context = canvas.getContext('2d')
// 清除画布
canvas.width = size
canvas.height = size
context.drawImage(video, 0, 0, size, size)
// canvas转为blob并上传
canvas.toBlob(function(blob) {
// 创建forme
var xhr = new XMLHttpRequest()
xhr.open('PUT', uploadSrc)// 注意跨域问题
xhr.send(blob)
xhr.onerror = function() {
return
}
}, 'image/png')
}, 500)
此处要注意的是,多一个setTimeout方法,因为绝大部分视频的首屏都是黑屏,为了避免尴尬,让视频走500毫秒
整体要注意的是需要测试浏览器是否符合canvas和Blob对象的兼容性。如果后端需要传的是base64,则把canvas对象转成base64就行,canvas自身有转化的方法,具体请参考别的文章
canvas前端压缩图片和视频首屏缩略图并上传到服务器的更多相关文章
- php 图片操作类,支持生成缩略图,添加水印,上传缩略图
<?php class Image { //类开始 public $originimage = ""; //源图片文件地址 public $image ...
- canvas前端压缩图片
参考网上的用法,下面是利用canvas进行的图片压缩 <!DOCTYPE html> <html> <head> <meta charset="ut ...
- 【Web】前端裁剪图片,并上传到服务器(Jcrop+canvas)
web网站中常常有的功能:上传头像.上传封面等:一般图片都有一定的比例限制,所以需要前端在上传图片时,进行裁剪,并把裁剪后的图片进行上传. 本例采用Jcrop插件实现裁剪效果,canvas裁剪图片,并 ...
- HTML5 Canvas前台压缩图片并上传到服务器
1.前台代码: <input id="fileOne" type="file" /> <input id="btnOne" ...
- 使用canvas给图片添加水印, canvas转换base64,,canvas,图片,base64等转换成二进制文档流的方法,并将合成的图片上传到服务器,
一,前端合成带水印的图片 一般来说,生成带水印的图片由后端生成,但不乏有时候需要前端来处理.当然,前端处理图片一般不建议,一方面js的处理图片的方法不全,二是有些老版本的浏览器对canvas的支持度不 ...
- 使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器
使用ajax上传图片,支持图片即时浏览,支持js图片压缩后上传给服务器 ajax上传主要使用了 var reader = new FileReader() 此方法 js图片压缩主要是利用canvas进 ...
- 前端借助dom-to-image把HTML转成图片并通过ajax上传到服务器
之前接到了一个任务,把jsp中的table转成一个图片,保存在指定文件夹并显示在前端. 我的思路是:一.引用第三方js在前端把table转成图片 二.通过ajax把图片上传到服务器,保存在指定文件夹 ...
- HTML5 本地裁剪图片并上传至服务器(转)
很多情况下用户上传的图片都需要经过裁剪,比如头像啊什么的.但以前实现这类需求都很复杂,往往需要先把图片上传到服务器,然后返回给用户,让用户确定裁剪坐标,发送给服务器,服务器裁剪完再返回给用户,来回需要 ...
- MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器
MVC图片上传.浏览.删除 1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...
随机推荐
- 谈谈-Android Studio 调试功能
先编译好要调试的程序. 1.设置断点 选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可. 2.开启调试会话 点击红色箭头指向的小虫子,开始进入调试. IDE下方出现Debug视图,红色的箭头指 ...
- 根据已知值,选中selec中的选项
$("#modal").find("select[name=materialType]").find("option").each(func ...
- response和ServletContext和乱码问题
服务器端以/开始就代表当前项目名客户端必须以 /项目名/资源 才能定位到资源 软件与软件之间,以字符为标准传递,传递字节,接收端自己按原来的编码集编码之后再按照自己的编码集解码编码(如果没有对应字符, ...
- ASP.Net 第一天笔记 MVC 控制器与视图数据传递注意事项
1.如果方法的参数的名称与表单元素Name属性的值一致的话,会自动填充 2.如果表单元素的Name属性与实体类型中属性一致,那么表单中的数据会自动赋值给实体中的属性 3.控制器中重载的方法 方法前上边 ...
- 多个串的最长公共子串 SPOJ - LCS2 后缀自动机
题意: 求多个串的最长公共子串 这里用的是O(n)的后缀自动机写法 我后缀数组的专题有nlog(n)写法的 题解: 对于其中的一个串建立后缀自动机 然后对于后缀自动机上面的每一个节点求出每一个节点最长 ...
- 【HDUOJ】1257 最少拦截系统
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257 题意:经典题. 题解:最长上升子序列. 代码: #include <iostream> ...
- Synchronizing Timer----集合点定时器
1.Number of Simulated Users to Group by:意思是比如设置是10,那会等到有10个线程到时候,才放行 2.Timeout in millilseconds:比如设置 ...
- autocomplete调用接口数据实现
开发中遇到需要对大量数据实时搜索,频繁调取api产生的问题记录 1.每输入一个字符,就向后端发一次请求.当输入完一个人名的时候,就已经向后端发送了好多条请求,太多的请求会给服务器带来压力,其实在实时搜 ...
- AutoFac mvc和WebAPI 注册Service (接口和实现)
AutoFac mvc和WebAPI 注册Service (接口和实现) 1.准备组件版本:Autofac 3.5.0 Autofac.Integration.Mvc 3.3.0.0 (I ...
- nginx打包成rpm
[root@localhost ~ ]#yum -y install lrzsz pcre pcre-devel zlib zlib-devel vim nrt-tools psmisc gcc gc ...