关键词:
H5上传图片之canvas,使用canvas处理压缩图片再上传
html代码:
<form action="" method="post"> <dl> <dd> <div> <div id="img_wrap"> </div> <input type="file" accept="image/jpg,image/jpeg,image/png,image/gif" id="fileImage" multiple="multiple" name="img" style="display:none" /> <a id="upimg" href="javascript:">上传图片</a> </div> </dd> <dd style="margin-top:10px;"> <a id="abtn_submit" href="javascript:">提交</a> </dd> </dl> </form>
js代码:
<script type="text/javascript"> $(function () $("#abtn_submit").click(function () if ($("input[name=‘imgs‘]").length < 1) layer.open( content: ‘必须上传图片才能提交‘, skin: ‘msg‘, time: 2 ); return; $("form").submit(); ); $("#upimg").click(function () $("#fileImage").click(); ) $("#fileImage").change(function () $.each($(this)[0].files, function (i, e) if (!/image\/\w+/.test(e.type)) //请确保文件为图像类型 return; imgHandle(e); ) ) ); function imgHandle(_file) var reader = new FileReader(); reader.readAsDataURL(_file); reader.onload = function (e) var result = e.target.result; var image = new Image(); image.src = result; image.onload = function () var cvs = document.createElement("canvas"); var scale = 1; if (this.width > 1000 || this.height > 1000) if (this.width > this.height) scale = 1000 / this.width; else scale = 1000 / this.height; cvs.width = this.width * scale; cvs.height = this.height * scale; var ctx = cvs.getContext("2d"); ctx.drawImage(this, 0, 0, cvs.width, cvs.height); var newImageData = cvs.toDataURL(_file.type, 0.8); var imgdata = "<a href=‘javascript:‘ onclick=‘delimg(this)‘><img src=\"" + newImageData + "\" />"; imgdata += "<input type=\"hidden\" name=\"imgs\" value=\"" + newImageData + "\" /></a>"; $("#img_wrap").append(imgdata); function delimg(e) layer.open( content: ‘您确定要删除此图片吗?‘, btn: [‘删除‘, ‘取消‘], skin: ‘footer‘, yes: function (index) $(e).remove(); layer.close(index); ); </script>
后台处理代码:
//有图片时处理如下 string[] imgs = collection.GetValues("imgs"); List<U_Img> uimglist = new List<U_Img>(); int i = 1; foreach (string imgBase64Str in imgs) int indexOf = imgBase64Str.IndexOf(‘/‘) + 1; string ftype = imgBase64Str.Substring(indexOf, imgBase64Str.IndexOf(‘;‘) - indexOf); string fex = ".jpg"; switch (ftype) case "jpeg": case "jpg": fex = ".jpg"; break; case "png": fex = ".png"; break; case "gif": fex = ".gif"; break; string Base64Str = imgBase64Str.Substring(imgBase64Str.IndexOf(‘,‘) + 1); Base64Str = Base64Str.Trim(‘\0‘); byte[] imgArr = Convert.FromBase64String(Base64Str); using (MemoryStream ms = new MemoryStream(imgArr)) Bitmap bmp = new Bitmap(ms); string fname = "/timg/" + DateTime.Now.ToString("yyMMddmmHHssffff") + i.ToString() + fex; string FilePath = Request.MapPath(fname); bmp.Save(FilePath); uimglist.Add(new U_Img() ImgUrl = fname, ImgTime = DateTime.Now ); i++;
h5利用canvas实现海报功能(代码片段)
最近接到一个需求,微信中用户上传图片生成海报。这个需求比较常规,实现思路也比较简单,通过利用用户的input输入,对所上传的图片进行处理,最后通过第三方库html2canvas合成对应的图片即可。思路虽然简单,但是在实现... 查看详情
h5canvas图片上传操作
最近写的小demo,使用的是h5的canvas来对图片进行放大,移动,剪裁等等这是最原始的代码,比较接近我的思路,后续会再对格式和结构进行优化html:1<prename="code"class="brush:html;"rows="15"cols="300">2<inputtype="file"name=""accept="image/gif,image/jpe... 查看详情
关于h5绘制canvas生成图片的注意点!(代码片段)
...动端自适应的问题:答:如果是最后只要一张canvas生成的图片,而不是要绘制的canvas的图形,则不需要考虑自适应,绘制canvas的时候的宽高,可以直接写成UI提供的图的大小,比如UI提供的图是750*1280,则绘制canvas的时候,所有的... 查看详情
前端预览图片和h5canvas压缩图片上传
思路是将图片抽样显示在canvas上,然后用通过canvas.toDataURL方法得到base64字符串来实现压缩。1.base64转二进制文件/***dataURLtoblob,reftohttps://gist.github.com/fupslot/5015897*@paramdataURI*@returns{Blob}*/functiondataURItoBlob(dataURI){var 查看详情
h5压缩图片上传(filereader+canvas)
因为最近项目做一个webApp的页面,需要上传图片,总结了一下,思路如下:一、监听一个 input(type=‘file‘)的change事件,然后拿到文件的file;<inputid="img-input"class="upload-input"type="file"accept="image/*"id="imgbox"multiple/>二、把file转... 查看详情
canvas动画之二--创建动态粒子网格动画(代码片段)
...,自己也就做了一个,当背景挺不错的。CSDN不能上传超过2M的图片,所以就简单截了一个静态图片:可以点击这里查看动画.下面就开始说怎么实现这个效果吧:首先当然是添加一个canvas了:<canvasid=... 查看详情
h5在canvas中绘制图片时候遇到跨域问题(代码片段)
在前端绘制图片时需要用到其他服务器的图片,当然没有读取成功。在网上一顿搜索,设置了图片允许跨域。img.crossOrigin="Anonymous"在调试中也可以看到图片,不过还是绘制失败。经过一波XXX式的试探和查找,找到一个解决方案。... 查看详情
h5图片预览压缩上传(代码片段)
...片大于1.2M的时候,对图片进行压缩 3、以表单的形式上传图片 4、图片删除 预览效果图: 代码说明:1、input:file选择图片<!--html部分--><ulid="preview"class="clear"><liclass="fl"><imgsrc="/images/ 查看详情
h5移动端实现图片文件上传(代码片段)
PC端上传文件多半用插件,引入flash都没关系,但是移动端要是还用各种冗余的插件估计得被喷死,项目里面需要做图片上传的功能,既然H5已经有相关的接口且兼容性良好,当然优先考虑用H5来实现。 JS代码:<scripttype="text... 查看详情
h5+上传图片(选择图片拍照)(代码片段)
$(document).on(‘click‘,‘.upimgbtn‘,function()varpos=$(this).data(‘pos‘);varposTxt=‘photo1‘:‘照片1‘,‘photo2‘:‘照片2‘,‘photo3‘:‘照片3‘;varthat=this;if(mui.os.plus)vara=[title:"拍照",title:"从手机相册选择"];plu 查看详情
解决用h5canvas绘制的图片或文字在高清屏下模糊的问题(代码片段)
...点都有不同的指标数值,而且很多点根据分类还用不同的图片作为背景。因此考虑用H5Canvas加载图标png并把数值画上去,然后把canvas导出图片url并应用到点标记上。1、常规绘制:代码:varimage=newImage();image.src=‘../../assets/img/polluti... 查看详情
h5相机上传图片压缩
...小,设置不同的压缩比。functioncompress(res,fileSize){//res代表上传的图片,f 查看详情
h5图片上传预览(代码片段)
项目中常用到文件上传预览功能,整理一下:如果不想使用type="file"的默认样式,可以让其覆盖在一个按钮样式上边,设其透明度为0,或者使用Label关联html<div><divclass="figure-box"id="figure_box"></div><inputtype="file"id="imgUp... 查看详情
canvas保存图片到七牛云(代码片段)
最近在做一个项目,需要在前端对图片切片并上传到七牛云技术要点canvas.toBlob(blob=>);//可将canvas保存成二进制文件formData.append(‘file‘,blob,‘filename‘);//将二进制文件添加到FormData中ajax.send(formData);//上传数据到后端处理代码实... 查看详情
h5之canvas
Canvas是HTML5新增的组件,它就像一块幕布,可以用JavaScript在上面绘制各种图表、动画等。在使用Canvas前,用canvas.getContext来测试浏览器是否支持Canvas: <!--HTML代码--><canvasid="test-canvas"width="200"heigth="100"><p>你的浏览... 查看详情
web前端移动端课程之canvas教程系列(代码片段)
canvascanvas介绍canvas是一个客户端浏览器里的画图技术,canvas也是h5的一个新标签,canvas标签就已经提供了一张所谓的画布,那么再通过js的canvas一些操作就可以达到最终画图的效果canvas的基本使用主要就是如何通过js操... 查看详情
web前端移动端课程之canvas教程系列(代码片段)
canvascanvas介绍canvas是一个客户端浏览器里的画图技术,canvas也是h5的一个新标签,canvas标签就已经提供了一张所谓的画布,那么再通过js的canvas一些操作就可以达到最终画图的效果canvas的基本使用主要就是如何通过js操... 查看详情
h5+jqweui实现手机端图片压缩上传
主要功能,使用H5的formData上传base64格式的图片,canvas压缩图片,前端样式使用weui,为方便起见,使用了jquery封装过的weui,jqweui。话不多少,开始上代码。前端代码,直接在jqweui官网下的demo里改的(是dist下的demo)<!DOCTYPEhtml&g... 查看详情