php的GD库实例3=图片转黑白灰

442 阅读1分钟

图片转素描这种技术,我们了解gd库的基础练习,使用场景比较少,但是会的话,总会让你在更多场合出彩;为我们的技术打下基础


// 黑白灰
$image_path = "1.jpg";
// $image_path="2.png";
$im = imagecreatefromjpeg($image_path);
//如果是Gif用imagecreatefromgif,PNG用imagecreatefrompng……
if (imageistruecolor($im)) {
    imagetruecolortopalette($im, false, 256);
    //如果是真彩色图象,将真彩色图像转换为调色板图像
}
for ($i = 0; $i < imagecolorstotal($im);/*获得调色板中颜色的数目*/ $i++) {
    
    //获得颜色i点的颜色值
    $rgb = imagecolorsforindex($im, $i);
    
    //获得颜色灰度值
    $gray = round(0.229 * $rgb['red'] + 0.587 * $rgb['green'] + 0.114 * $rgb['blue']);
    //设置i点颜色值
     
     if ($gray <= 150){
        $gray = $gray+50;
    }else if ($gray <= 200){
        $gray = $gray+40;
    }else if ($gray <= 218){
        $gray = $gray+30;
    }else  if ($gray <= 240){
        $gray = $gray+10;
    } else  if ($gray <= 250){
        $gray = $gray+5;
    } else{
         $gray = 255;
    } 
    imagecolorset($im, $i, $gray, $gray, $gray);
}
header('Content-Type: image/jpeg');
//设置图片类型,同样如果想生成gif或者png图象,要替换成相应的头
imagejpeg($im);
//输出图象,如果是gif就用imagegif,如果是png就用imagepng……
imagedestroy($im);
//销毁图象,释放资源