前言

最近看到很多平台有自己的设计器,可以将图像合成到产品图上,最终出来真是的成品图效果,就稍微研究了一下。

  1. 产品图

  1. 素材图

  1. 最终效果图

原理

合成的原理其实很简单,就是图层的叠加,在canvas图层设置合成选型为 "globalCompositeOperation = destination-atop"

设置之后2个图层叠加的时候,只会合成在手提包透明区域。所以除了透明区域其他区域不显示图像。

假设我们不设置看看会是什么效果;

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对调一下就可以看到效果。

这里我们可以清晰的看到素材图片在底部,样版图案在顶部,因为手提袋的正面是透明的,所以下面的图就会展示出来给人是合成的视觉效果。其他区域由于不是透明图所以遮住了素材图。如果是这种做法的话,用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;
}

效果

总结

我们可以看到用DIV实现简单的两张图叠加合成更简单,而且更容易调试图片的大小以及位置,但是如果碰到手提袋的侧面也要贴图呢?下一章会教大家如何给多个区域贴图。

canvas合成图片到产品样版上(一)相关推荐

  1. canvas 中将图片绘制在杯子上

    一个有意思的东西,利用 canvas 将图片绘制在杯子上,主要是将图片进行分割,然后重新绘制,难点就在于按照椭圆+斜线分割. 文章地址: http://www.qiutianaimeili.com/h ...

  2. Canvas合成图片

    const canvas = document.createElement('canvas')const ctx = canvas.getContext('2d')const img = new Im ...

  3. [JavaScript] canvas 合成图片和文字

    Canvas Canvas 是 HTML5 新增的组件,就像一个画板,用 js 这杆笔,在上面乱涂乱画 创建一个 canvas <canvas id="stockGraph" ...

  4. canvas合成图片 圣诞节新技能戴帽

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. 微信小程序canvas合成图片(海报),生成的图片展示不出来,或者空白。

    背景: 1.用户点击分享朋友圈,将二维码与一张背景图合成一张图片,然后将其显示. 2.用户点击保存图片将图片保存到手机相册里面. 问题: 用户点击分享盆友圈合成后的图片显示空白.控制台可以打印出来链接 ...

  6. 移动端canvas合成图片,填充文字自动换行

    今天用canvas合成带有微信公众号二维码和祝福语的春节贺卡 由于代码都是原生的没有引入其他库,所以直接将对应部分贴出来吧. html <!--画布 --> <canvas id=& ...

  7. android canvas 网络图,【巨坑:toDataURL】canvas合成网络图片

    不知有没有小伙伴用过canvas合成图片,然后爆炸 报错截图 尼玛,然后各种搜索,不外乎以下几种坑爹处理方案: 后端处理,比如Access-Control-Allow-Origin "*&q ...

  8. 生成二维码,合成图片

    1.动态生成二维码 链接:https://pan.baidu.com/s/14cDyPTWOn_YuHWE-cfrIfg 提取码:6bfv 使用: <div class="qrcode ...

  9. canvas 实现图片局部模糊_JavaScript中的图片处理与合成(四)

    引言: 本系列现在构思成以下4个部分: 基础类型图片处理技术之缩放.裁剪与旋转(传送门): 基础类型图片处理技术之图片合成(传送门): 基础类型图片处理技术之文字合成(传送门): 算法类型图片处理技术 ...

最新文章

  1. javafx 打开新窗口_新的JMetro JavaFX 11兼容版本
  2. ES termQuery和matchQuery区别浅析
  3. python如何定位路径_selenium_webdriver(python)查看文件路径,鼠标定位
  4. IntelliJ IDEA 插件推荐
  5. eclipse maven 打war包的几种方式
  6. Atitit bootsAtitit bootstrap布局 栅格.docx目录1. 简述container与container-fluid的区别 11.1.1. 在bootstrap中的布局
  7. 解决:error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“
  8. 【光纤传输特性】图文并茂,你该了解这些
  9. Keras深度学习实战(20)——DeepDream模型详解
  10. sublimit 编辑器扩展_视频字幕编辑工具-字幕编辑器(Subtitle Edit)下载v3.5.17 多语中文版-西西软件下载...
  11. vue中keep-alive、activated的探讨和使用
  12. Android侧滑返回分析和实现(不高仿微信),flutter项目实战
  13. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别
  14. 小白学python(爬虫知识1(大体框架)
  15. Python并行处理
  16. Halcon九点及旋转标定流程
  17. 【USACO 2.1.4】荷斯坦奶牛
  18. 7-3 计算正弦函数值 (10 分)
  19. 字幕批量翻译 字体定制
  20. 微型计算机中ram中文名字是,微型计算机中,RAM的中文名字是().

热门文章

  1. 预告 | 2021数字经济领航者峰会,零数科技CEO林乐受邀出席并做主题演讲
  2. 七大姑八大姨?一款让你轻松搞明白亲戚关系的开源计算器
  3. 中国服装广告的三大硬伤
  4. python第三方库:pypinyin将汉字转为拼音
  5. 超级课程表:3000万大学生的运营策略和价值挖掘
  6. 【毕业设计】深度学习中国交通标志识别系统 - opencv python
  7. Vue/uni-app倒计时
  8. 中秋快乐! 与时间服务器同步
  9. dict个人笔记——Python
  10. OpenCV 单通道三通道理解