cropper裁剪图片和canvas合成图片
2018-02-01 18:47
274 查看
裁剪合成图片之前,首先需要去了解canvas和cropper。
2、给c创建一个绘画环境:var ctx = canvas.getContext("2d");
3、可以对其设置宽高:canvas.width=330;canvas.height=440(看自己要多大设置);
4、可以借助canvas的drawImage开始画图:ctx.drawImage(img,0,0,300,400),其中img是要画进来的图片路径,两个0分别是x和y轴起点,300与400是要画的图片的宽高;
4、如果画布要添加文字可以使用canvas的fillText:ctx.fillText('合成成功',10,20),其中10和20是距离x和y轴的距离;
5、通过canvas的toDataURL反回合成的图片路劲,canvas返回的路径本来就是base64的:var
dase64 = canvas.toDataURL("image/jpeg",0.1),其中0.1是canvas压缩图片大小,看要可以不要
例子:html
这是一个裁剪图片的插件http://fengyuanchen.github.io/cropper/,配合jq一起使用即可,记住一定要用cropper最新版的,很多bug它都解决了
直接粘贴代码:
css:
html:
然后还有就是Image这个对象。
(以上做得比较粗陋,时间紧急,还望多多包含)
canvas
1、先创建一个节点:var c=ocument.createElement("canvas");2、给c创建一个绘画环境:var ctx = canvas.getContext("2d");
3、可以对其设置宽高:canvas.width=330;canvas.height=440(看自己要多大设置);
4、可以借助canvas的drawImage开始画图:ctx.drawImage(img,0,0,300,400),其中img是要画进来的图片路径,两个0分别是x和y轴起点,300与400是要画的图片的宽高;
4、如果画布要添加文字可以使用canvas的fillText:ctx.fillText('合成成功',10,20),其中10和20是距离x和y轴的距离;
5、通过canvas的toDataURL反回合成的图片路劲,canvas返回的路径本来就是base64的:var
dase64 = canvas.toDataURL("image/jpeg",0.1),其中0.1是canvas压缩图片大小,看要可以不要
例子:html
<div class="container"> <img src="" alt="" id="img1"> </div>js:
<script src="http://mat1.gtimg.com/tech/css/huiyan/jquery.min.js"></script> <script type="text/javascript"> var canvas = document.createElement("canvas"); var ctx = canvas.getContext("2d"); canvas.width=330; canvas.height=440; var img=new Image;//new一个img对象 img.src='img/img1.png';//此处只能用相对路径,绝对存在跨域问题 img.onload=function(){ ctx.drawImage(img,0,0,300,400);//要多少张图片合成drawImage多少个 var img2=new Image; img2.src='img/img2.png'; img2.onload=function(){ ctx.drawImage(img2,250,350,30,40); ctx.fillText("Hello World!",10,50);//fillText可以添加文字 var base64=canvas.toDataURL("image/jpeg");//toDataURL自带放回路径 $('#img1').attr('src',base64) } } </script>
cropper
可以参考这一篇文章,很强:http://blog.csdn.net/qq727013465/article/details/51823231这是一个裁剪图片的插件http://fengyuanchen.github.io/cropper/,配合jq一起使用即可,记住一定要用cropper最新版的,很多bug它都解决了
直接粘贴代码:
css:
<link rel="stylesheet" type="text/css" href="http://guangzhou.auto.qq.com/cropper/cropper.css"/> <link rel="stylesheet" type="text/css" href="http://guangzhou.auto.qq.com/cropper/main.css"/> <style type="text/css"> html,body{font-family: "微软雅黑";font-size: 14px;} body,h1,h2,h3,h4,h5,div,span,p,ul,ol,dl,dt,dd,a,input,img,select{margin: 0;padding: 0;list-style: none;border: 0;font-weight: normal;outline: none;} .container{width: 300px;height: 400px;margin: auto;background-color: gainsboro;} #img{width:100%;height: auto;margin: auto;} input{width: 100px;height: 40px;border: 1px solid red;}
html:
<input type="file" id="file" accept="image/*"> <div class="container"> <img src="" alt="" id="img"> </div> <input type="submit" name="button" id="submit" value="裁剪" /><input type="submit" name="submit1" id="submit1" value="合成" /> <div > <img src="" id="img2" style="width: 300px;height: 400px;"/> </div> <div > <img src="" id="bg"/> </div>js:
<script src="http://mat1.gtimg.com/tech/css/huiyan/jquery.min.js"></script> <script src="http://guangzhou.auto.qq.com/cropper/cropper.js" type="text/javascript" charset="utf-8"></script> <script src="http://guangzhou.auto.qq.com/cropper/main.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> var $image = $('.container > img'); $image.cropper({ aspectRatio: 3 / 4, background:false, movable:true, cropBoxResizable :true, }); $('#file').change(function(){ var file = this.files[0]; fileName = file.name; var reader = new FileReader(); //reader回调,重新初始裁剪区 reader.onload = function(){ // 通过 reader.result 来访问生成的 DataURL var url = reader.result; //选择图片后重新初始裁剪区 $image.cropper('reset', true).cropper('replace', url); }; reader.readAsDataURL(file); }); $('#submit').click(function(){ var type = $image.attr('src').split(';')[0].split(':')[1]; var canVas = $image.cropper("getCroppedCanvas", {}); $('#img2').attr('src', canVas.toDataURL()); }) //这一块是合成图片和裁剪一起的代码 var canvas=document.createElement('canvas'); var ctx=canvas.getContext('2d') canvas.width=300; canvas.height=400; $('#submit1').click(function(){ var img1=new Image; img.src='img/bg.png' img.onload=function(){ ctx.drawImage(img,0,0,300,400); var img2=new Image; img2.src=$('#img2').attr('src'); ctx.drawImage(img2,50,50,200,300); ctx.fillText('合成图片成功',40,50) var dase64 = canvas.toDataURL("image/jpeg"); $('#bg').attr('src',dase64) } }) </script>其实这里还需要了解FileReader这个的用法,网上都有,可以参考这里:https://www.cnblogs.com/MrZouJian/p/5909263.html
然后还有就是Image这个对象。
(以上做得比较粗陋,时间紧急,还望多多包含)
相关文章推荐
- Canvas实现图片裁剪、移动、放大缩小以及图片的合成
- 用canvas裁剪图片
- HTML5 本地裁剪图片并上传至服务器 canvas图片上传 canvas图片裁剪
- 【Web】前端裁剪图片,并上传到服务器(Jcrop+canvas)
- cropper.js 实现HTML5 裁剪图片并上传(裁剪上传头像。)
- cropper图片裁剪上传
- canvas图片合成
- cropper.js 实现HTML5 裁剪图片并上传(裁剪上传头像。)
- 简单图片裁剪上传,jsp+servlet+jQuery+Image Cropper(测试)
- 关于js合成图片 html2canvas
- Cropper.js 实现裁剪图片并上传(PC端)
- jquery.cropper 裁剪图片上传
- vue移动端裁剪图片结合插件Cropper的使用实例代码
- 从web图片裁剪出发:了解H5中的canvas
- Android图片裁剪库——cropper使用,完美解决图片填充不满布局问题
- 使用HTML5 canvas 标签进行图片裁剪、旋转、缩放
- H5网页Canvas画布绘图 图片文字合成
- 使用canvas来实现两张图片合成一张
- cropper.js 超级好用的裁剪图片工具
- 图片裁剪(cropper)后上传问题