Php 如何使用干涉图像删除图像中的背景

Php 如何使用干涉图像删除图像中的背景,php,intervention,Php,Intervention,例如,我试图删除徽标中的白色背景以获得透明图标 在这张照片上 是.jpg,我想用E背景删除(如果可能,只删除外部的内容,否则删除所有白色背景) 我试着用laravel来编写代码 public function resizeImage($logo, $placeName, $domain) { $mask = Image::make($logo) ->contrast(100) ->contrast(50) ->trim(

例如,我试图删除徽标中的白色背景以获得透明图标

在这张照片上

是.jpg,我想用E背景删除(如果可能,只删除外部的内容,否则删除所有白色背景)

我试着用laravel来编写代码

public function resizeImage($logo, $placeName, $domain)
{
    $mask = Image::make($logo)
        ->contrast(100)
        ->contrast(50)
        ->trim('top-left', null, 40)
        ->invert(); // invert it to use as a mask

    $new_image = Image::canvas($mask->width(), $mask->height(), '#000000')
        ->mask($mask)
        ->resize(32,32, function ($constraint) {
            $constraint->aspectRatio();
            $constraint->upsize();
        })
        ->encode('png', 100);

    $route = $domain . '/favicon/favicon.png';

    Storage::disk('gcs')
        ->put($route, $new_image);
    $route = Storage::disk('gcs')
        ->url($route);

    return $route;
}
但这是我的结果

图像失去颜色(黑色)

我做错了什么?我觉得我很接近实现它,但是,我需要图标有颜色

$img = Image::canvas(800, 600);
调用无背景色的canvas方法。
查看更多有关此功能的信息:$new\u image=image::canvas($mask->width(),$mask->height())这为什么会有所不同?给你的答案添加一些解释。看官方文件显然问题出在面具上,但如果我尝试使用面具以外的方法,结果是一幅完全黑色的图像