使用canvas来实现两张图片合成一张
2018-01-04 16:47
1071 查看
写在开头:
最近遇到一个需求,就是上传一张图片,原来的图片作为底图,两张图片组合在一起,形成一张新的图片。并能点击另存。网上各种百度,谷歌。有很多方法。然后在我的需求里面都不是很适用。就结合前人的成果,自己又重新写了一套。
前端菜鸟一个,进了前端的坑之后才知道,前端的东西真的是太多了。
谨以此篇博客,告诫自己,要以虚心态度继续学习,不断学习才行。
这篇博客会持续更新,在使用过程中还有着新问题的出现。
主要思路:
前端实现图片处理,主要就是通过canvas来实现的。先用canvas废话不多说,直接上代码。
html代码,选择用input方式是为了防止图片跨域,没有写什么样式,纯原生的。
第一张图片:<input type="file" name="file" id="change" > 第二张图片:<input type="file" name="file2" id="change2"> <canvas id="myCanvas" width="400" height="260"></canvas> <button id="btn">生成图片</button> <a href="" id="download" download="测试图片.png">点我下载</a>
js代码,就是通过canvas来实现,先画一张图片,作为底图,再画一张图片再那张图的上面,代码如下:
<script> var canvas = document.getElementById('myCanvas'); var context = canvas.getContext('2d'); var btn = document.getElementById('btn') var change = document.getElementById('change') var change2 = document.getElementById('change2') var download = document.getElementById('download') var img1 = new Image() var img2 = new Image() //处理跨域 img1.crossOrigin = 'anonymous' img2.crossOrigin = 'anonymous' change.onchange = function(event){ var file = event.target.files[0] var url = window.URL.createObjectURL(file) img1.src = url } change2.onchange = function(event){ var file = event.target.files[0] var url = window.URL.createObjectURL(file) img2.src = url } img1.onload = function(){ context.drawImage(img1,10,10,400,260) } img2.onload = function(){ context.drawImage(img2,20,20,300,240) } btn.onclick = function(){ var img = convertCanvasToImage(canvas) var arr = img.src.split(',') var mime = arr[0].match(/:(.*?);/)[1] var bstr = atob(arr[1]) var n = bstr.length var u8arr = new Uint8Array(n); while (n--) { u8arr = bstr.charCodeAt(n); } var blob = new Blob([u8arr],{type:mime}) } //下载图片 download.onclick = function(blob){ var img = convertCanvasToImage(canvas) download.href = img.src } function convertCanvasToImage(canvas) { var image = new Image(); image.src = canvas.toDataURL("image/png"); return image; } </script>只是粗略的实现了基本功能。附上源码。
欢迎多多指教。
相关文章推荐
- 使用canvas在前端实现图片合成
- 使用h5的canvas实现两张图片的合并
- 在程序中如何把两张图片合成为一张图片
- Android:将数字画在图片上合成一张图的两种实现方法(二)
- css样式实现整个页面背景使用一张图片
- Android进阶篇之RoundProgress(圆形进度条)使用两张图片叠加实现
- 使用TransitionDrawable实现两张图片的过渡效果
- 使用TransitionDrawable实现两张图片的过渡效果
- 工作积累(一)——使用canvas实现前台图片base64转码
- 使用Fresco实现简单的显示一张图片
- html5使用canvas绘制一张图片
- ps怎么把两张图片合成一张 图解PS两张图片合成一张的技巧
- 使用一张或两张图片创建大背景网站
- android开发 两张bitmap图片合成一张图片
- 使用JavaScript+canvas实现图片裁剪
- 用flex将两张图片合成一张图片
- 通过BufferedImage实现将几张图片合成一张图片,图片效果类型为依次排列图片
- 使用JavaScript+canvas实现图片裁剪
- 两张图片叠加成一张图片后使用
- iOS代码实现两张图片合成一个