PHP Imagick 去背景 (抠图专用)

最近接到一个项目需要用到电子签章。
需求:章、人员签名,盖在白纸或手写在白纸上通过拍照的方式上传到系统。
前期是公司小妹通过PS把图片扣出来,弄成透明的背景然后上传。
这样每次有新增都需要人工处理,不方便和智能,在需求方的强烈要求下开启了研究之路。
文采不好废话不多说了。
一,PHP扩展之 Imagick安装 
(安装部分转至 https://www.cnblogs.com/jinxiblog/p/8053008.html

使用环境

安装步骤

根据环境下载合适的 imagick扩展 和 imagemagick程序

1.下载拓展

下载地址一: http://windows.php.net/downloads/pecl/releases/imagick/
下载地址二: https://pecl.php.net/package/imagick
要点: 注意对应php版本 ts还是nts x86还是x64
这里以phpinfo()为准

所以我应该下载imagick 3.4.3版本 PHP5.6  Non Thread Safe (NTS) x86 的拓展——php_imagick-3.4.3-5.6-nts-vc11-x86.zip

2. 安装拓展

  1. 解压上述文件后,将php_imagick.dll复制到php/ext目录,或者其他你的存放拓展的目录
  2. 修改php.ini 加上extension=php_imagick.dll,注意php可能有多个ini,以phpinfo为准
  3. 此时复制解压上述文件目录中其他dll到php目录,重启apache,此时phpinfo显示拓展安装成功,但是 ImageMagick number of supported formats为0,到这里成功安装了一半

3 下载imagemagick程序

下载地址:http://windows.php.net/downloads/pecl/deps/
imagemagick还有官网下载,此处不鼓励从imagemagick官方下载,他们的网站上我并没有找到历史版本下载,安装失败的几率很大
下载与phpinfo提示一致的版本,此时需要注意  1.软件版本对应     2.vc11还是vc14 3.x86还是x64 都要以phpinfo为准,我的

所以我下载 ImageMagick-6.9.3-7

4 安装imagemagick程序

  1. 下载的文件解压后,将程序整体复制到无空格 无中文字符的目录中 E:\Program Files (x86)\
  2. 配置环境变量,在“此电脑”右键“属性”,以此点击“高级” “环境变量” ,在 “系统变量”中找到键为path的数据,双击path,选择“新建”,将刚刚放程序的目录“E:\Program Files (x86)\ImageMagick\bin”填入即可
  3. 将“E:\Program Files (x86)\ImageMagick\bin”目录中的所有的以“.DLL‘为后缀的文件放入php的根目录,应该有145个

 

重启计算机

上php代码

$color=new ImagickPixel("#ffffff"); 
$alpha='0.0';//0到1之间 背景透明度
$fuzz='0.5';//0到1之间 和上面的颜色相似度
//imagick = new \Imagick(realpath("images/BlueScreen.jpg"));
$imagick = new Imagick(dirname(__FILE__).'/zyt.jpg');
$imagick->setimageformat('png');
$imagick->transparentPaintImage(
$color, $alpha, $fuzz * Imagick::getQuantum(), false
);
$imagick->despeckleimage();
//直接输出在浏览器
header("Content-Type: image/png");
echo $imagick->getImageBlob();
//保存图片
$imagick->writeImage(dirname(__FILE__).'/zyt.png');
$imagick->clear();
$imagick->destroy();

 

拍照图片

处理后效果(浏览器输出)

 

处理后效果(PNG透明)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值