Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP代码删除图像的白色背景色_Php_Image_Image Processing - Fatal编程技术网

如何使用PHP代码删除图像的白色背景色

如何使用PHP代码删除图像的白色背景色,php,image,image-processing,Php,Image,Image Processing,可能重复: 我发现了一个非常有用的Ruby代码,可以去除图像的白色背景色 请参阅下面的参考代码: 我试图将代码翻译成php。然而,我得到了一个不想要的结果。这是我第一次在这里发帖,请有人给我一些指导,原谅我的英语不好 function setTransparency($new_image,$image_source) { $transparencyIndex = imagecolortransparent($image_source); $transpa

可能重复:

我发现了一个非常有用的Ruby代码,可以去除图像的白色背景色

请参阅下面的参考代码:

我试图将代码翻译成php。然而,我得到了一个不想要的结果。这是我第一次在这里发帖,请有人给我一些指导,原谅我的英语不好

function setTransparency($new_image,$image_source) 
{         
    $transparencyIndex = imagecolortransparent($image_source); 
    $transparencyColor = array('red' => 255, 'green' => 255, 'blue' => 255); 

    if ($transparencyIndex >= 0) { 
        $transparencyColor = imagecolorsforindex($image_source, $transparencyIndex);    
    } 

    $transparencyIndex = imagecolorallocate($new_image, $transparencyColor['red'], $transparencyColor['green'], $transparencyColor['blue']); 
    imagefill($new_image, 0, 0, $transparencyIndex); 
    imagecolortransparent($new_image, $transparencyIndex); 

}

//create image from the source link
$image = imagecreatefrompng('http://i.stack.imgur.com/k7E1F.png');

//create image mask layer
$new_image = ImageCreateTruecolor(imagesx($image), imagesy($image));

//remove white background 
setTransparency($new_image,$image); 

//merge mask with original image source
ImageCopyMerge($new_image, $image, 0, 0, 0, 0, imagesx($image), imagesy($image), 100);

imagejpeg($new_image, null, 95);

JPEG格式不支持透明度。您应该考虑使用PNG作为输出格式。将最后一行更改为:

imagepng($new_image, null, 9);

你的链接指的是Mathematica解决方案,而不是Ruby。您需要研究ImageMagick的使用:这是另一个包含ImageMagick解决方案的问题:这不是一个重复的问题,他想使用实际的php库实现Mark Ransom的算法,您发布了一些与Mark Ransom的算法完全无关的命令行实用程序