canvas合成图片到产品样版上(一)
前言
最近看到很多平台有自己的设计器,可以将图像合成到产品图上,最终出来真是的成品图效果,就稍微研究了一下。
产品图
![](/assets/blank.gif)
素材图
![](/assets/blank.gif)
最终效果图
![](/assets/blank.gif)
原理
合成的原理其实很简单,就是图层的叠加,在canvas图层设置合成选型为 "globalCompositeOperation = destination-atop"
设置之后2个图层叠加的时候,只会合成在手提包透明区域。所以除了透明区域其他区域不显示图像。
假设我们不设置看看会是什么效果;
![](/assets/blank.gif)
globalCompositeOperation的具体用法可以参考canvas官方的解释;
代码实现
创建canvas标签
<div><canvas id="canvas" width="800" height="800"></canvas>
</div>
合成函数
function mergeImages() {// 创建一个画布const canvas = document.getElementById("canvas");const context = canvas.getContext("2d");const template = new Image();// 样版图片template.src = "handbag.png";template.onload = function() {context.drawImage(template, 0, 0,800,800);const overlay = new Image();overlay.src = "girl.png";overlay.onload = function() {context.globalCompositeOperation = "destination-atop";context.translate(-10,50)context.drawImage(overlay, 0, 0, 800, 800);};};}
mergeImages()
当然还有其他方法可以实现,可以将图片素材放在底部,样板图案放在上面一层,这样透明区域的图像就会显示出来,我们只需要把两张图片的src对调一下就可以看到效果。
![](/assets/blank.gif)
这里我们可以清晰的看到素材图片在底部,样版图案在顶部,因为手提袋的正面是透明的,所以下面的图就会展示出来给人是合成的视觉效果。其他区域由于不是透明图所以遮住了素材图。如果是这种做法的话,用DIV也可以实现一样的效果。
DIV代码实现
HTML
<div class="container"><img src="girl.png" alt=""><img src="template.png" alt=""></div>
CSS
.container{width: 800px;height: 800px;position: relative;
}
.container img{position: absolute;left: 0;top: 0;width: 100%;
}
.container img:first-child{transform: scale(0.7);left: -20px;top: 50px;
}
效果
![](/assets/blank.gif)
总结
我们可以看到用DIV实现简单的两张图叠加合成更简单,而且更容易调试图片的大小以及位置,但是如果碰到手提袋的侧面也要贴图呢?下一章会教大家如何给多个区域贴图。
canvas合成图片到产品样版上(一)相关推荐
- canvas 中将图片绘制在杯子上
一个有意思的东西,利用 canvas 将图片绘制在杯子上,主要是将图片进行分割,然后重新绘制,难点就在于按照椭圆+斜线分割. 文章地址: http://www.qiutianaimeili.com/h ...
- Canvas合成图片
const canvas = document.createElement('canvas')const ctx = canvas.getContext('2d')const img = new Im ...
- [JavaScript] canvas 合成图片和文字
Canvas Canvas 是 HTML5 新增的组件,就像一个画板,用 js 这杆笔,在上面乱涂乱画 创建一个 canvas <canvas id="stockGraph" ...
- canvas合成图片 圣诞节新技能戴帽
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 微信小程序canvas合成图片(海报),生成的图片展示不出来,或者空白。
背景: 1.用户点击分享朋友圈,将二维码与一张背景图合成一张图片,然后将其显示. 2.用户点击保存图片将图片保存到手机相册里面. 问题: 用户点击分享盆友圈合成后的图片显示空白.控制台可以打印出来链接 ...
- 移动端canvas合成图片,填充文字自动换行
今天用canvas合成带有微信公众号二维码和祝福语的春节贺卡 由于代码都是原生的没有引入其他库,所以直接将对应部分贴出来吧. html <!--画布 --> <canvas id=& ...
- android canvas 网络图,【巨坑:toDataURL】canvas合成网络图片
不知有没有小伙伴用过canvas合成图片,然后爆炸 报错截图 尼玛,然后各种搜索,不外乎以下几种坑爹处理方案: 后端处理,比如Access-Control-Allow-Origin "*&q ...
- 生成二维码,合成图片
1.动态生成二维码 链接:https://pan.baidu.com/s/14cDyPTWOn_YuHWE-cfrIfg 提取码:6bfv 使用: <div class="qrcode ...
- canvas 实现图片局部模糊_JavaScript中的图片处理与合成(四)
引言: 本系列现在构思成以下4个部分: 基础类型图片处理技术之缩放.裁剪与旋转(传送门): 基础类型图片处理技术之图片合成(传送门): 基础类型图片处理技术之文字合成(传送门): 算法类型图片处理技术 ...
最新文章
- javafx 打开新窗口_新的JMetro JavaFX 11兼容版本
- ES termQuery和matchQuery区别浅析
- python如何定位路径_selenium_webdriver(python)查看文件路径,鼠标定位
- IntelliJ IDEA 插件推荐
- eclipse maven 打war包的几种方式
- Atitit bootsAtitit bootstrap布局 栅格.docx目录1. 简述container与container-fluid的区别 11.1.1. 在bootstrap中的布局
- 解决:error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“
- 【光纤传输特性】图文并茂,你该了解这些
- Keras深度学习实战(20)——DeepDream模型详解
- sublimit 编辑器扩展_视频字幕编辑工具-字幕编辑器(Subtitle Edit)下载v3.5.17 多语中文版-西西软件下载...
- vue中keep-alive、activated的探讨和使用
- Android侧滑返回分析和实现(不高仿微信),flutter项目实战
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别
- 小白学python(爬虫知识1(大体框架)
- Python并行处理
- Halcon九点及旋转标定流程
- 【USACO 2.1.4】荷斯坦奶牛
- 7-3 计算正弦函数值 (10 分)
- 字幕批量翻译 字体定制
- 微型计算机中ram中文名字是,微型计算机中,RAM的中文名字是().