2016-12-02 46 views
0

我这里显示的URL保存在数据库中的图像,现在我想以显示它完全是黑色的,如果条件不满足PHP图片更改为剪影

的URL

$url = '/images/'.$row['sprite'].'.png'; 

其将显示在一个正常的图像标签

我要的是,如果$行[“正常”] == 0,那么黑色的形象,使其成为一个人影,否则显示正常图像

年代后ome搜索我已经找到关于imagefilter,但不知道如何应用它,因为我发现的示例没有显示如何应用它当页面上有其他内容

或者它会更好在Photoshop中制作剪影,因为其中有800多个,尽管页面上只有最多两个

+0

你能分享你的图片吗,只是其中之一?你有任何图像库,你在你的服务器使用像imagick等 – oguzhancerit

+0

它基本上在这里的主页上的任何图像,虽然这并不是所有的人,http://calona.co.uk/ 我希望他们被黑如果用户还没有发现他们 –

+0

好的。服务器中是否有任何图像库? – oguzhancerit

回答

0

首先,您需要将GD Image Library加载到您的服务器。

定义图像路径并使用imagecreatefrompng创建图像对象,如果图像类型不同,请选择正确的图像路径。

$image_path = $_SERVER['DOCUMENT_ROOT']."/assets/img/horse1.png"; 
$image_obj = imagecreatefrompng($image_path); 

现在,我们需要应用过滤器,如果您的条件提供。使用imagefilter函数将任何过滤器应用于图像。在这个例子中,IMG_FILTER_GRAYSCALE很公平,或者你可以通过使用函数手册来改变它。

if($row['normal'] == 0) { 
    $op_result = imagefilter($image_obj,IMG_FILTER_GRAYSCALE); 
} 

最后,我们需要使用imagepng函数将图像保存到服务器。

imagepng($image_obj,$_SERVER['DOCUMENT_ROOT']."/assets/img/horse1_black.png"); 

请检查下面的完整代码beacuse我强烈建议您不要为每个用户创建黑色图像。如果你的图像已经存在于你的服务器上,只需显示它而不需要任何创建。

$image_path  = $_SERVER['DOCUMENT_ROOT']."/assets/img/horse.png"; 
$black_image_path = $_SERVER['DOCUMENT_ROOT']."/assets/img/horse_black.png"; 

if($row['normal'] == 0) { 
    if(file_exists($black_image_path)){ 
     return $black_image_path; //if your black image is already exist just return and use it. 
    } 
    else { 
     $image_obj = imagecreatefrompng($image_path); //create a image object from a path 
     $op_result = imagefilter($image_obj,IMG_FILTER_GRAYSCALE); //applying grayscale filter to your image object. 
     if($op_result) { 
      imagepng($image_obj,$black_image_path); //save the image to defined path. 
      return $black_image_path; 
     } 
     else { 
      return "Error Occured."; 
     } 
    } 
}