php 生成纯黑白图片,使用CSS将彩色图片转换为黑白图片

通过使用过滤器我们能够不使用photoshop等图像软件或js、php等技术就可以进行各种图像处理。现在,CSS过滤器已经被各种现代浏览器广泛支持,我们可以使用一些组合的方法,来制作跨浏览器的图像处理效果,通过这种方法,即使是在IE浏览器中也能够正确的显示我们需要的图像效果。

在这篇文章中,我们将使用CSS滤镜来将一张彩色图片转换为黑白图片。

CSS greyscale 过滤器

我们不能简单的使用CSS来将彩色图片转换为黑白色,必须通过一个过滤器才能完成之一工作,如果想将一组图片进行转换,可以使用下面的CSS代码:

img.desaturate { filter: grayscale(100%); }

Chrome 和 Safari浏览器在实现CSS过滤器时需要厂商前缀的支持,所以代码应该改为:

img.desaturate { -webkit-filter: grayscale(100%); filter: grayscale(100%); }

CSS代码对应的HTML代码十分简单,就是一个带class的图片元素:

添加SVG filter效果

目前,CSS过滤器可以工作在Chrome 18+和Safari 6+的桌面和移动手机设备、Firefox 35+、Opera 15+,以及最新版本的Android和黑莓系统的浏览器上,IE的支持还处于开发状态。

为了在早期版本的Firefox浏览器中后的相同的效果,我们需要使用SVG过滤器。这里我们创建了一个单独的SVG文件:desaturate.svg。它的代码如下:

这个SVG的代码看起来有些复杂,它使用了颜色矩阵。关于颜色矩阵可以参考一下这篇文章:HTML5 SVG和CSS3炫酷液态菜单按钮特效。

将这个SVG代码写在HTML页面中,然后就可以使用下面的CSS代码来使用它:

img.desaturate{

-webkit-filter: grayscale(100%);

filter: grayscale(100%);

filter: url(desaturate.svg#greyscale);

}

添加对IE浏览器的支持

为了使这个效果可以在IE6-9浏览器中使用,我们要使用IE浏览器专用的滤镜。

img.desaturate{

-webkit-filter: grayscale(100%);

filter: gray;

filter: grayscale(100%);

filter: url(desaturate.svg#greyscale);

}

如果你还想添加对旧版本的Webkit内核浏览器的支持,可以像下面这样:

img.desaturate{

-webkit-filter: grayscale(1);

-webkit-filter: grayscale(100%);

filter: gray;

filter: grayscale(100%);

filter: url(desaturate.svg#greyscale);

}

注意:以上方法对最新版本的IE浏览器是没有效果的,如果你想在所有浏览器上都达到同样的效果,做好使用js插件来实现这个效果,例如使用:Greyscale.js。

使用上面的方法,我们就可以使用CSS将彩色图片转换为黑白图片,而不需要使用图像编辑软件。使用CSS可以非常容易的改变图像,例如,在上面的CSS代码中,我们将百分比从100%降低为50%,就可以使图片的饱和度降低一半。

直接在CSS中使用SVG

我们还可以直接在CSS像图片一样引用SVG文件,将SVG文件从HTML文件中移除:

img.desaturate{

-webkit-filter: grayscale(100%);

filter: grayscale(100%);

filter: gray;

filter: url("data:image/svg+xml;utf8,#greyscale");

}

你可能感兴趣的:(php,生成纯黑白图片)