原生js 生成海报图_利用canvas合成图片的实现方法

时间: 2018-10-26阅读: 4468标签: 图片

目前浏览器html5的支持越来越好,我们现在不用服务器端,直接在前端利用canvas就可以进行图片的合成了。这样做的好处在于:不浪费服务器资源,响应更快,体验更好。下面就介绍下如何通过原生js 来生成海报图,实现多个图片,文字的合成效果。


代码如下:

<img src="" id="poster"/>

<script>
function drawImg(bgimg,img,txt){//背景图片,上面图片,文字
    var canvas = document.createElement("canvas");
    canvas.width = 700;
    canvas.height = 700;
    var context = canvas.getContext("2d");

    context.rect(0 , 0 , canvas.width , canvas.height);
    context.fillStyle = "#fff";
    context.fill();

    var myImage = new Image();
    myImage.src = bgimg; 
    myImage.crossOrigin = 'Anonymous';

    myImage.onload = function(){
        context.drawImage(myImage , 0 , 0 , 700 , 700);
        context.font = "30px Courier New";
        context.fillText(txt,300,300)
        var myImage2 = new Image();
        myImage2.src = img; 
        myImage2.crossOrigin = 'Anonymous';
        
        myImage2.onload = function(){
            context.drawImage(myImage2 , 200 , 200 , 250 , 250);
            var base64 = canvas.toDataURL("image/png");
            var img = document.getElementById('poster');
            img.setAttribute('src' , base64);
        }
    }
}
drawImg("/Test/src/1.jpg","/Test/src/2.jpg","测试文字");
</script>

注意:图片需要注意跨域问题,最好保证都在同一服务器下。


canvas的drawImage()语法

context.drawImage(img,x,y);
context.drawImage(img,x,y,width,height);
context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);

各个参数示意为:

参数描述
img用来被绘制的图像、画布或视频。
sx可选。img被绘制区域的起始左上x坐标。
sy可选。img被绘制区域的起始左上y坐标。
swidth可选。img被绘制区域的宽度(如果没有后面的width或height参数,则可以伸展或缩小图像)。
sheight可选。img被绘制区域的高度(如果没有后面的width或height参数,则可以伸展或缩小图像)。
x画布上放置img的起始x坐标。
y画布上放置img的起始y坐标。
width可选。画布上放置img提供的宽度(可能会有图片剪裁效果)。
height可选。画布上放置img提供的高度(可能会有图片剪裁效果)。



站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/1196

关闭

html如何把图片大小变小?

我们在布局图片列表时,通常我们要控制图片的高度和宽度这样来达到图片统一。我们在HTML布局时候直接在图片img标签加宽度和高度属性即可控制图片高和宽。

100多行代码实现js或者jquery版的类似juejin的预览图片功能

预览图片是一个很常用的业务功能,比如掘金的预览图片功能,下面我们就来模拟实现一个类似掘金的简单预览图片功能(PS:最终实现动画效果不如掘金,可自行扩展,还有就是嵌套的元素与掘金的方式也有区别)。

图片懒加载及异常处理

在日常页面开发中,常常会涉及到图片的展示。有时候当图片资源过多时,我们希望能将图片延迟加载,同时当图片加载失败后,能用一张默认图片去代替其进行展示

图片该如何优化来提高网站性能?

图像是web上提供的最基本的内容类型之一。他们说一张图片胜过千言万语。但是如果你不小心的话,图片大小有时高达几十兆。因此,虽然网络图像需要清晰明快,但它们尺寸可以缩小压缩的,使用加载时间保持在可接受的水平。

CSS如何将图像转换为模糊图像?

在CSS中,可以使用filter属性来模糊处理图像;filter属性用于将图像转换为模糊图像。该属性主要用于设置图像的视觉效果。blur():给图像设置高斯模糊,值越大越模糊。

css怎么让背景图片铺满?

css让图片铺满的方法:可以使用background-size:cover样式设置背景图片铺满。background-size属性规定背景图像的尺寸。

浅探前端图片优化

性能优化是前端开发必不可少的一环,而图片优化又是性能优化中必不可少的一环,但不知道有多少开发者在网页的开发过程中会注意图片的使用,图片使用不当可能会导致网页加载卡顿、网页加载速度慢等问题,这篇文章将会将我以往对图片的处理做个总结

图片的预加载与懒加载

由名字可以知道,图片的预加载->当用户需要查看图片可以直接从本地缓存中取到(提前加载下来的),图片的懒加载->是当用户一次性访问的图片数量比较多的时候,会减少请求的次数或者延迟请求,是一种服务器前端的优化

webpack 图片路径问题

今天在学 webpack 时碰到一个问题,就是 webpack 通过插件 file-loader 打包图片后,在最终的 html 文件中图片地址是不对的,只有图片名称是对的,相信应该也有很多和我一样的初学者掉坑了。在 webpack.config.js 的配置文件中添加一个属性

css如何控制图片不变形?

在做网页时会遇到许多的问题,有的时候会遇到图片变形的问题,我们该如何通过css控制图片不变形呢?下面我们来看一下通过css控制图片不变形的方法。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!