今天看到很多网站的网页都变成灰色了,很多是使用了IE的滤镜,但是在非IE下就失效了,有的用的是另做的一套黑白图片实现网页的黑白版,这样显得又太麻烦。
记得前一段时间看到老外的一篇利用Apache的mod_rewrite模块和php结合实现网站图片水印的文章,今天受到此文章的启发我就想能不能利用同样的原理来实现将网站的所有图片都变成黑白的呢?经过今天的实验,我成功了!证明我的想法是正确的!下面就介绍一下如何利用apache或者nginx与php的结合来实现黑白版的网页。
首先修改网站的apache配置文件(.htaccess也行)或者nginx的配置文件:
Apache:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule \.(gif|jpeg|jpg|png)$ img_to_black_write.php [QSA,NC]
Nginx(在server中加入):
if (!-f $request_filename) {
rewrite ^(.*)\.(jpg|png|gif)$ /img_to_black_write.php;
}
这里是img_to_black_write.php的代码
< ?php
$file = $_SERVER['DOCUMENT_ROOT'] . $_SERVER['REQUEST_URI'];
$im = imagecreatefromstring(file_get_contents($file));
if (imageistruecolor($im))
{
imagetruecolortopalette($im, true, 256);
}
$total_colors = imagecolorstotal($im);
for ($i = 0; $i < $total_colors; $i++){
$rgb = imagecolorsforindex($im, $i);//获得颜色i点的颜色值
$gray = round(0.229 * $rgb['red'] + 0.587 * $rgb['green'] + 0.114 * $rgb['blue']);//获得颜色灰度值
imagecolorset($im, $i, $gray, $gray, $gray);//设置i点颜色值
}
header('Content-Type: image/jpeg');
imagejpeg($im, null, 100);
imagedestroy($im);
?>
怎么样?整个网页(图片一定要来自你的网站)的图片(包括背景图片)都变成黑白的了吧?怎么?怎么字体什么的都是彩色的?那就要修改你的css了。
Ok,网页从彩色到黑白就这么简单!赶快试一下吧!
如果转载请注明出处!谢谢合作!