snapchat滤镜灰色

by zhangxinxu from https://www.zhangxinxu.com
本文地点: https://www.zhangxinxu.com/wordpress/?p=2547

//zxx: 近来很积极地折腾手机页面的些工具,加上其他一些人生重要的事,以是木有更新。

大概早就知道,像汶川这种糟糕的日子网站全灰在IE下是可以轻松实现的( filter: gray; ),不外,其时,其他browser是无解的。不外,年代发展,现在,CSS3的渐渐推进,我们也开始看到“好坏效果”大范围应用于实际的大概。

CSS3 greyscale 滤镜实现

如下测试代码:

.gray { -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); -ms-filter: grayscale(100%); -o-filter: grayscale(100%); filter: grayscale(100%); filter: gray; }

HTML代码:

<img src="mm1.jpg" /> <img src="mm1.jpg" class="gray" />

假如你手上的browser是Chrome18+, 您可以狠狠所在击这里: CSS3 greyscale 滤镜与照片好坏

可以看到类似文章一开始展示的好坏对比效果图。

其他些browser,如FireFox很快就会跟上实现。固然,要实现(比方说)FireFox 4browser上照片变好坏的效果,也是可以的。可以使用SVG的灰度滤镜效果。

SVG滤镜实现

我们新建一个空缺文本文件,好比说: gray.txt . 拷贝进去如下的XML代码:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg"> <filter id="grayscale"> <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"/> </filter> </svg>

然后,修改后缀 .txt .svg . 然后就可以调用了~~

如下CSS调用代码:

filter: url(gray.svg#grayscale);

然后,效果就出来了。假如你手上的browser是FireFox4+,您可以狠狠所在击这里: SVG滤镜实现照片好坏demo

别忘了IEbrowser

IE下实现上面已经提过,就是:

至少IE7~9都是支持的。近来较懒,IE6懒得去测,支持与否不知。履历来看,应该是支持的。

我需要一个一统山河的方法

一统山河(完全兼容),假如单纯想通过CSS,也是可以的,你所要做的就是:每天拿个鱼竿去黄浦江垂钓,年复一年,日复一日……然后,两年后,只要两年,把上面两个demo页面F5一下,就可以了!很easy吧!

假如嫌上面的做法过于伦敦,且你也不是一根筋,到是有个一统山河的方法,不外不是CSS的干货,一个貌似有点名气的 Greyscale.js 。

用法很easy,引用JavaScript文件,如下:

<script src="http://james.padolsey.com/demos/grayscale/grayscale.js"></script>

然后,一句话:

grayscale(document.getElementById("thisImage"));

或DOM元素集:

grayscale(document.getElementsByTagName("img"));

假如你嘻歡使用jQuery,还可以使用:

grayscale($("#thisImage"));

很easy吧。

实现原理 :IEbrowser下是添加灰度滤镜,这个大家都懂的。其他browser貌似使用Canvas中的 getImageData 方法,然后对每个像素点进行灰度转换~~

因此,在当代browser下,对于该方法,图片的灰度处置有两个范围性:
1. 速率 。300*300这张一样平常般大小的图片变灰就要数秒之久;
2. 跨域 。安全性机制,无法转换跨域的图片为好坏色。

您可以狠狠所在击这里: Greyscale.js照片变灰兼容性实现demo

截图跟上面的同等,略。

增补于2015年12月21日
许多人邮件问,IE10, IE11这两个高不成低不就的browser怎么办?

我个人都是借助SVG实现(专门为IE10-IE12)的,讲 毛玻璃效果 的时间有类似实现。

1. 页面载入(可以请求载入,要么直接放在HTML代码中)上面gray.txt对应的SVG文件,也就是:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg"> <filter id="grayscale"> <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"/> </filter> </svg>

2. 然后将图片转为SVG图片引用, filter 属性值指向 grayscale (上面红色的 id 值)。比方

<svg> <image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="zxx.jpg" x="0" y="0" width="256" height="190" filter="url('#grayscale')"></image> </svg>

您可以狠狠所在击这里: 使用SVG实现IE10+全兼容的图像好坏demo

over~

增补于2020年04月03日

有不少人扣问IE10和IE11browser下整个页面灰度怎么处置。

只能使用是个灰色层覆盖暂时顶一下了,为了防备影响点击,我们可以使用 outline ,要么 box-shadow 属性实现。

比方页面插入这么一段HTML:

<div style="position:fixed;z-index:999;width:100vw; height:100vh; left:-100vw; outline: 101vw solid rgba(100,100,100,.7);"></div>

层级另有透明度,要么颜色大家都可以自己调一调,我这里就是表示。

JS代码:

document.body.insertAdjacentHTML('afterbegin', '<div style="position:fixed;z-index:999;width:100vw; height:100vh; left:-100vw; outline: 101vw solid rgba(100,100,100,.7);"></div>');

盼望可以帮到大家。

(本篇完)

拍摄这种顺滑的水流效果时通常要搭配中灰镜以放慢快门速率

中性灰度滤镜 (Neutral density filter),简称 中灰镜 减光镜 ND镜 ,是一种无色至灰色的拍照 滤镜 。抱负中的中灰镜可以削弱全部 波长 的光的亮度,而不会发生偏色。

中灰镜的用处在于于种种环境下(特殊是光照猛烈时)能让拍照师!更好的控制 快门 速率和 光圈 大小来到达某些特别效果,同时又不会由于快门速率过慢而导致过曝。

照相机 控制照片的亮度有三种方法,以 数码相机 为例。进步 感光度 是最为直接的措施,但过高的ISO会产生 噪点 ,影响成像质素。同时也可以放大 光圈 ,但光圈越大景深也就越深,并且起到的作用也不显着。再者就是减慢快门速率,假如当拍照师想要得到人群活动,车流要么水流等动态效果,又要不让照片过曝。就要使用中灰镜。

同时,在日光下拍摄植物/动物的微距作品时也有帮助。淘汰亮度可以让拍照师用更大甚至最大的光圈拍摄作品,用浅 景深 突出主体(配景含糊)。

使用中灰镜拍摄的样张。曝光时间5秒,光圈f5.6,ISO100

中灰镜的典型用途包括:

  • 为物体添加运动含糊效果,特殊是水体运动(如瀑布、河道和海洋)与云的运动
  • 在猛烈光照下收缩景深(如日光)
  • 淘汰运动物体的能见度,比方拍摄出无人街道效果
  • 降低快门速率到 同步速率

中灰镜也用在 折返望远镜头 上,由于这类镜头上通常没有光圈机构,使用ND镜可以调治快门速率。如 美能达 AF Reflex 500mm F8 ,在后口位置计划了滤镜匣,可以安装随附的ND4滤镜。

有一种称作中灰渐变滤镜的产品。这种产品的通光度会在镜头上渐渐淘汰。在某些状态下,有一部分地区亮度非常高而其他则差别,如斜阳时会非常有效。

别的一种则被称作“无级可调中灰镜”。它包括两片渐渐不透明的玻璃镜片(要么 偏振镜 ),当他们相互反向旋转时,通光量会连续增长或淘汰,从0%到100%。通常用在折返式望远镜要么其他要求必须在最大光圈使用的光学装备上。

市面上的中灰镜产品 都不大概是 完美的,而且它们也不会对全部波长的光都作出一样的减少。这大概会导致照片产生偏色,特殊是使用某些便宜的产品时。更重要的是,大多数中灰镜只会过滤光谱中 可见光 的波长,不能准确的拦截其他波长如 红外线 和 紫外线 。假如使用中灰镜去察看这类射线出处大概会产生危险(比方 太阳 和 白热 的金属和玻璃),这类射线哪怕肉眼不可见、亮度也并不耀眼,都大概导致潜在的侵害。为了安全起见必须配备专门的滤镜。

中灰镜的种类 [ 编辑 ]

下面列出中灰镜型号以相当于淘汰几多档光圈和通光量分列,从小到大。数字越高,通光量越小,亮度也就越低。

相当于缩小镜头直径 通光度淘汰 淘汰的光圈档数 百分比通光量 没有安装中灰镜 原始大小 0 原始大小 100% ND2 1/2 0.3 1 50% ND4 1/4 0.6 2 25% ND8 1/8 0.9 3 12.5% ND16 1/16 1.2 4 6.25% ND32 1/32 1.5 5 3.125% ND64 1/64 1.8 6 1.563% ND128 1/128 2.1 7 0.781% ND256 1/256 2.4 8 0.391% ND512 1/512 2.7 9 0.195% ND1024 1/1024 3.0 10 0.098% ND2048 1/2048 3.3 11 0.049% ND4096 1/4096 3.6 12 0.024% ND8192 1/8192 3.9 13 0.012%

替换本领 [ 编辑 ]

仅仅为了得到运动含糊效果,不使用中灰镜,而接纳多张拍摄( Bracketing )后合成的方法也可以进行模仿。这样的操作也有分外的好处:

  • 叠加抵消无规律噪点,特殊是数码拍照中,长时间曝光的热噪声
  • 制止使用大档位ND造成的偏色问题
  • 对于广角镜头,特殊是超广角镜头,制止使用均一厚度片式滤镜带来的中心与周边差别

缺点在于假如拍摄隔断较大,那么一连运动合成后会留下断层。

后期合成可以使用诸如StarTails等软件实现。

外部链接 [ 编辑 ]

编辑1: 重写问题,这样更轻易明白。 这真的让我感到狐疑。 我想对图像应用滤镜,以使超越某个阈值的值表现为完全白色,而全部即是或小于阈值的值都完全为黑色。 这是一张代表3x3像素图像RGB值的地图: |(255,255,255)|(220,220,220)|(100,100,100)| |(254,254,254)|(12 ,12 ,12 )|(38 ,38 ,38 )| |(201,201,201)|(105,105,105)|(60 ,60 ,60 )| 应用滤镜后,我盼望收到一张图像,此中全部大于200的值都将转换为(255,255,255),而全部即是或小于200的值都将转换为(0,0,0),比方: |(255,255,255)|(255,255,255)|(0 ,0 ,0 )| |(255,255,255)|(0 ,0 ,0 )|(0 ,0 ,0 )| |(255,255,255)|(0 ,0 ,0 )|(0 ,0 ,0 )|

关于我应该从那里开始的任何想法? 在svg中甚至大概吗? 我知道我可以在svg的过滤器中创建矩阵乘法,但是我不知道怎样解决这个问题。

谢谢! 编辑1: 我在数学交流中公布的相关问题: https : //math.stackexchange.com/questions/2087482/creating-binary-matrix-for-threshold-as-a-result-of-matrix-multiplcation 编辑2 :: 从Snap.svg代码中提取:此矩阵会将彩色图像转换为灰度: <feColorMatrix type="matrix" values="0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"/>

我不想修改灰度,而是要修改此处的值以获取好坏。 我想选择阈值,高于该阈值将返回白色,而将其返回为黑色

附加信息 :根据MSDN,这是乘法发生的方法: Resulting vector my coveted matrix original vector | R' | | a00 a01 a02 a03 a04 | | R | | G' | | a10 a11 a12 a13 a14 | | G | | B' | = | a20 a21 a22 a23 a24 | * | B | | A' | | a30 a31 a32 a33 a34 | | A | | 1 | | 0 0 0 0 1 | | 1 | 依次将其应用于输入图像的每个像素。

本文网址: http://www.bots4us.com/page/202010229648_198_3485005362/home