php 图片抠图,php imagick api蒙板抠图

本文介绍了如何使用PHP的Imagick库进行图像处理,包括生成透明背景、模板合成、抠图操作,并最终将抠图与背景图片结合。详细步骤涉及创建Imagick对象、调整图像尺寸、透明处理、模板合并和背景融合。
摘要由CSDN通过智能技术生成

cc96754f6c4c

m3.png

cc96754f6c4c

bg.jpg

cc96754f6c4c

d4.png

//imagick 抠图流程

$imagick = new Imagick();

$width = 300;

$height = 435;

$bg = new Imagick("D:/phpStudy/WWW/test/bg.jpg");

$bg->resizeImage($width,$height,Imagick::FILTER_LANCZOS,1);

$pathOut = "D:/phpStudy/WWW/test/test5.jpg";

//1.0 生成衣服背景色,

$color_transparent = new ImagickPixel('#ff00ff'); //transparent 透明色

//$color_transparent = new ImagickPixel('transparent'); //transparent 透明色

$imagick->newImage($width, $height, $color_transparent, 'png');

//2.0 模板图

$path2 = "D:/phpStudy/WWW/test/testt.png";

$imagick2 = new Imagick("D:/phpStudy/WWW/test/m3.png");

$imagick->compositeImage($imagick2,Imagick::COMPOSITE_OVER,0,0);

//3.0 抠图图层, 白色为待抠区(抠成透明,1.0透明度),黑色的保留区0.0透明度,$imagick3 is a hole; 使用alpha通道抠出

$imagick3 = new Imagick("D:/phpStudy/WWW/test/d4.png");

$imagick3->negateImage(FALSE);

// (and/or) Drop matte state of mask. Same as +matte

$imagick3->setImageMatte(FALSE);

//4.0 合成成抠出的模板

$imagick->setImageAlphaChannel(Imagick::ALPHACHANNEL_DEACTIVATE);

// Apply holes mask as the new alpha channel.

$imagick->compositeImage($imagick3, Imagick::COMPOSITE_COPYOPACITY, 0, 0);

//$imagick->compositeImage($imagick3,Imagick::COMPOSITE_DSTIN,0,0, Imagick::CHANNEL_ALPHA);

//5.0 背景 + 抠出模板 组合

$bg->compositeImage($imagick,Imagick::COMPOSITE_DEFAULT,0,0);

$bg->writeImage($pathOut);

$imagick3->destroy();

$imagick2->destroy();

$imagick->destroy();

$bg->destroy();

下面是合成效果:

cc96754f6c4c

test5.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值