透明背景情况下遮罩出不规则图片

news/2025/2/24 17:31:02

我们在处理图片,比如用户头像的时候,通常上传的都是矩形图片
例如:
3250007602-547424f893b6a_huge256

有时候根据设计师的需求,会要求是圆形或者带圆角,这时候我们通常使用css border-radius来达到这一效果:

css.avatar {
    width: 50px;
    height: 50px;
    overflow: hidden;
    border-radius: 50%;
}
.avatar > img {
    width: 100%;
    height: 100%;
}

但是这次遇到的一个需求是,图片要不规则显示出来,设计稿中是这样的
图片描述

好我们来想可能办法,总体思路是遮罩,难点是遮罩出的图片是不规则,要有白色边框,背景透明。

  1. 使用png透明蒙版
  2. css shape、clip等
  3. 在四个角画三角形来遮罩出六边形
  4. canvas
  5. svg

我们来一一试验:

使用png透明蒙版

如果纯色背景还可以,但是背景要求透明的,所以第一种看样子不大可能了。

css shape、clip等

css-webkit-clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);

这样确实可以画出来六边形,背景也可以是透明,如果仔细研究还有可能画出白色的边框但是
图片描述
这样画出来是完全的标准六边形,而设计稿是带设计师傲娇的圆角的,显然不符合精准还原。
http://jsfiddle.net/chromefans/30oepvhz/3/embedded/

在四个角画三角形来遮罩出六边形

这样也确实可以画出六边形,但是实现出来效果和css shape一样,标准六边形,只是兼容性要好一些。

canvas

我这里没做canvas的demo,就不演示了,如果实在没有完美的方式,就回来用canvas。

svg

好的,终于码到这里了……
在经过一系列研究探讨之后,发现了这篇文章
http://www.html5rocks.com/en/tutorials/masking/adobe/
文中很巧妙的实现了在不规则情况下显示图片,还可以透明背景,在查阅mdn后,还原了设计稿。
图片描述
还原一下步骤,这个方式需要设计师配合导出一个处理好透明区域的svg,在使用-webkit-mask-box-image方法把svg当做蒙版,这时输出的图片已经是六边形的了
那白色边框怎么办?
既然头像大小是固定的,渲染出来六边形也是固定的,那就。
图片描述
切一个盖在上面吧。

demo:
http://jsfiddle.net/chromefans/p3t6pdqe/1/embedded/


http://www.niftyadmin.cn/n/4085526.html

相关文章

vue 引入pdf跨域问题怎么解决_word转pdf排版变了怎么办?一招帮你解决排版问题!...

众所周知,想要编辑好一个文件,一篇文章,需要的不仅仅是丰富的脑力和想象力,还需要一个完美的排版。如果仅仅是word排版出现问题,那么问题也不是很大,但如果是word转PDF排版变了,就会显得有点棘手…

CentOS离线安装GCC编译环境

gcc编译环境rpm下载 安装相关的rpm包,具体版本可能随时间变化而变化,可以去以下地址下载: 重庆大学镜像:http://b.mirrors.lanunion.org/CentOS/中国科学技术大学镜像:http://centos.ustc.edu.cn/centos/上海交通大学镜…

opencv两个图像相减_图像技术检测图像中的条形码

编辑:zero关注 CV工程师的一技之长,AI算法与图像处理 微信公众号,研究好玩又有用的技术第005期在学习中发现快乐,在应用找到价值。这是我第五期分享图像技术应用的文章。前四期欢迎阅读和分享:扫描全能王?原…

用例图、类图中有哪些关系

用例图中的关系有关联(Association)、泛化(Generalization)、包含(Include)、扩展(Extend)。 类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization), 关联&…

js webpack 配置路径_Vue学习笔记之Webpack的使用

一、webpack的使用:项目结构:src:源码dist:打包后的文件,用于发布的文件(bundle.js就是打包后的文件,然后在index.html引用即可)同cmd进行项目打包:打包完,在项目dist目录下就会生成…

python安装打开_python安装超详细

安装python Python是跨平台的,它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序,在Linux上也是可以运行的。要学习编程,首先要安装工具,下面为大家演示python的安装。 安装Python 3.8 目前,P…

JavaEE(15) - JPA实体继承

1. 实体继承映射的三种策略 #1. 整个类层次对应一张表 #2. 连接子类 #3. 每个具体类对应一张表 2. 使用抽象实体 3. 使用非实体父类 4. 重定义子类实体的外键列 ----------------------------------------------------- 1. 实体继承映射的三种策略 #1. 整个类层次对应一张表 #2…

python语音识别的第三方库_Python3.5 调用讯飞动态链接库实现语音识别

讯飞的接口没有Restful,而我们偏偏要用Python开发,在官网论坛找了份Python实现的代码,但是已经不能正常运行,参考win开发SDK里的demo和文档,终于调通了,直接上代码,环境为Python3.5。 from ctyp…