看淘网
当前位置: 首页> 脱单技巧> 表白图片:用Canvas实现h5移动终端图像剪辑

表白图片:用Canvas实现h5移动终端图像剪辑

发布时间:2019-07-18 03:09:01 作者:xhs
表白图片:用Canvas实现h5移动终端图像剪辑(几天前,我在中国情人节做了一个h5活动页面。我需要做一个本地图片的剪辑和上传功能来生成一些特定的爱情图片。它主要使用的是h5的超链接文件API和超链接画布。我觉得图像裁剪功能还是很实用的,所以我写了一篇文章来分享它。\n demo地址:hyperlink https://github.com/bess-l/img clipping\nresults:gif\n呈现演示\nr问题是演示是用超链接Vue实现的,因为我直接在项目中复制和更改了它,所以我不需要转换它。)\n请重新读取图片\n要裁剪的第一件事是读取图像文件。使用输入指定文件类型已经足够简单了。\n\n vue中的方法\nclipimg(event)\this。clip=新剪辑(\'container\',this);\n此。夹子。初始化(事件。目标。文件[0]).\n关闭isclip=true;\n文档。尸体。addEventListener(\'touchmove,enclonding noscoll,false);\n,\n其中有对获取文件的处理\n//这些方法写入剪辑类\nhandlefiles(file)\nlet t=this;\nlet reader=new filereader();\nreader。readasdataurl(文件);\n读取。onload=function()\nt.i mgurl=this。result;\nt.p aintimg(此结果);\n \n \n创建一个新的filereader类,然后将读取的文件转换为使用readasdataurl的base64编码,然后使用paintimg方法进行绘制。\n请注意,文件读取是异步的,因此读取操作需要在on中进行。加载函数。\n拖动裁剪接口\n首先初始化\n,初始化一些基本参数\n//初始化\n输入(文件)\n这个。sx=0;//裁剪框的初始x\n这个。sy=0;//裁剪框的初始y值\n闭合开关h=233;//剪切框的宽度\n闭合高度=175;//剪切框的高度\n闭合选择框的高度=233/175;//剪切框的宽高比\n闭合手柄文件(文件);\n \cr的比例收口盒固定在4:3,需要的学生可以更换。对于宽度和高度,首先根据设计草图设置一个值,然后根据不同的图片重置该值。\n绘制裁剪界面\n打印(picURL)\n//其他代码\n//…\nimg。onload=function()\nlet imgscale=img.width/img.height;\nlet boxscale=t.rgional。偏移宽度/边缘。offsetheight;\n//确定方框与图片之间的比较\nif(imgscale=t.i.mgwidth-t.s.wid宽度)\nt.s.x=t.i.mgwidth-t.s.s.t.s.s.width;\n \\n \\n \\n\n 125;else \n t.y=starty+offsety;\n if(t.saty<=0)\n t.s y=0;\n如果(t.s.y>=t.m.ghei-t.height)\t.s.=t.m.ghei-t.height;\n \n \ntc utimage();\n \n)t.e ditbox,请使用。addEventListener(“TouchStart”,函数(ev)\nlet e=ev。触摸[0];\n绘图=true;\n p agex=e.p agex;\n p agey=e.p agey excuse;\nstartx=t.s x;\nstary=t.s y;\n)t.e ditbox。addEventListener('touchend',function()\ndraging=false;\n)\n这里的逻辑并不太复杂,首先记录初始位置,然后确定是向左还是向右移动,还是上下移动(对应于填充容器的高度和填充容器的宽度),然后根据pagex,pagey判断位置。\n保存图片\n保存()\nlet t=this;\nlet s***ecanvas=document。createElement方法(“canvas”);\nlet ctx=s***ecanvas。getContext(“2 d”);\n//图片的剪切大小\ns***canvas。宽度=466;\n血管。height=350;\nlet images=new image();\n图像。src=t.i mgurl;\n图像。onload=函数()\n//计算剪切图片的切割大小比例\nlet cropwidthscale=图像。width/t.i mgwidth;\nlet cropheightscale=图像。height/t.i mgheight;\nt.rawimageiosfix(ctx,images,cropwidthscale*t.s.x,cropheightscale*t.s.y,nt.width*cropwidthscale,t.height*cropheightscale,0,0,466,350);\n//ctx.drawimage(images,2*t.s.x,2*t.s.y,t.s.width*2,t.s.height*2,0,0,466,350);\n。$vm。clipURL=保存画布。ToDataURL();\t.r区域。removechild(t.g etimage);\t.r地区。removechild(t.e ditbox);\n \n \n此部分也非常简单。在裁剪框中记录裁剪开始和结束时的坐标,然后裁剪出一个新的画布,用todataurl方法转换成base64编码,然后传送到后台。我在这里剪的尺寸是固定的,这是一项业务要求,必要时可以更改。这是一般流程,谢谢阅读,如果有错误,请原谅我。”,'02f7b72cf530f36e','bor803pfv8lwg4mz0m3dykvkopl4tq0j',4)表白图片:用Canvas实现h5移动终端图像剪辑
蜜小助-恋爱/撩妹聊天必备神器
蜜小助App

内置20W+恋爱聊天话术

一键复制解决尬聊话题

相关推荐
喜欢一个人的表白情书,跟女生表白最感动的话 聊天技巧幽默追女孩子,让她对你好感翻倍 让女生瞬间感动的礼物,让礼物成为关系的突破点 怎么问女生要微信不会拒绝?自然一点更容易
热门推荐
1
九宫格打字告白暗语_九键数字告白集合
九宫格打字告白暗语_九键数字告白集合

超级流行"九键”表白,手机拼音九键打出来的数字表白是一个很浪漫的表白方式。看淘网专门去整理收集了这些九宫格打字告白暗语,让喜欢的人体验一把柳暗花明又一村的奇妙感受吧!

2
骑电动车的浪漫句子 一路追寻浪漫的巅峰
骑电动车的浪漫句子 一路追寻浪漫的巅峰

我能想到最浪漫的事,就是骑电瓶车送你上下班。今天小编给大家分享骑电动车的浪漫句子,一路追寻浪漫的巅峰,就算是骑电动车也可以一路放歌书写诗情画意。快来看淘网和小编一起学习浪漫句子怎么说吧!

3
追已婚女人的技巧和方法 结过婚的女人要这么追
追已婚女人的技巧和方法 结过婚的女人要这么追

对于男人来说,结过婚的女人会别具一番成熟的风情,追已婚女人的技巧和方法有哪些呢?已经结果婚的女人,对待爱情可能没有小女生那么期待,那么追求起来是不是更加复杂呢?下面就和看淘网一起看看追已婚女人的技巧和方法,结过婚的女人要这么追!

4
一加一等于几表白套路 表白成功率百分百
一加一等于几表白套路 表白成功率百分百

喜欢一个就要大胆的去表白,无论是男生还是女生,只有表白了才有可能成功脱单,这些表白套路助你抱的美人归,接下来就一起来看看一加一等于几表白套路吧。

5
最难懂的表白暗语 雨下挚友,称断人和
最难懂的表白暗语 雨下挚友,称断人和

就喜欢搞些云里雾里的!看淘网小编收集整理​最难懂的表白暗语,​也不知道对方懂不懂,反正表白是表白了,就看对方晓不晓得了!佛系表白!

6
抖音表白算式5201314 抖音表白算式5211314
抖音表白算式5201314 抖音表白算式5211314

抖音上很流行一个叫做数字表白的玩法,其实也就是以数字公式来表白,还有很多人不会玩,下面我就来教一教大家抖音表白算式5201314怎么玩。

最新推荐
如何快速追到喜欢的女生?追喜欢女生的7个技巧
如何快速追到喜欢的女生?追喜欢女生的7个技巧
2024-01-31
女生对自己忽冷忽热我该咋办啊?
女生对自己忽冷忽热我该咋办啊?
2024-01-31
喜欢一个人的表白情书,跟女生表白最感动的话
喜欢一个人的表白情书,跟女生表白最感动的话
2024-01-31
聊天技巧幽默追女孩子,让她对你好感翻倍
聊天技巧幽默追女孩子,让她对你好感翻倍
2024-01-31
让女生瞬间感动的礼物,让礼物成为关系的突破点
让女生瞬间感动的礼物,让礼物成为关系的突破点
2024-01-31
怎么问女生要微信不会拒绝?自然一点更容易
怎么问女生要微信不会拒绝?自然一点更容易
2024-01-31
热点推荐