PS:本文所述所有内容都需要ImageMagick库支持。一般主机都支持,但个人自己搭建本地环境默认没有开启ImageMagick。exec函数也不可以禁用。
1.抠图<?php
//纯色底抠图
$input="./1.jpg";
//待抠图文件路径
$ouput="./1.png";
//存放路径
$bgcolor="white";
//背景颜色。可使用十六进制色码和rgb(1,1,1)
$fuzz="30000";
//容差
exec("convert $input -fuzz $fuzz -transparent $bgcolor $ouput");
//执行抠图操作。并输入到指定路径
抠图前(白底):
抠图后(png透明):
2.羽化边缘(自动检测背景)<?php
$A1='1.png';
$A2='2.png';
$A3='3.png';
$A4='4.png';
$A5='5.png';
$img='待扣图.jpg';
$im = new Imagick($img);
//8000为边缘容差,修改此数值可适当去除多余相似杂色
$im->transparentPaintImage($im->getImagePixelColor(0, 0), 0, 8000,0);//生成png格式
$im->setImageFormat("png");//保存文件名
$im->writeImage("$A1");//细化边缘
exec("convert $A1 -threshold 75% $A2");
exec("convert $A2 -fill black -opaque white $A3");
exec("convert $A3 -channel RGBA -blur 0x2 $A4");
exec("convert $A1 $A4 -alpha on -compose copy_opacity -composite $A5");
//删除临时图片
unlink($A1);
unlink($A2);
unlink($A3);
unlink($A4);
抠图前
抠图后
3.剪切蒙版<?php
$img="1.jpg";//背景
$mask="2.png";//蒙版图。png格式
exec("convert $img $mask -alpha on -compose copy_opacity -composite ouput.png");
背景
遮罩
最后效果
4.混合模式<?php
//-geometry size size 叠加到指定位置坐标
//-compose xxxx 混合模式
$img=‘1.jpg’;//背景图
$img2=‘2.jpg’;//贴图
exec('convert $img $img2 -geometry +480+80 -compose Multiply -composite ouput.jpg');
背景图
叠加图(白底)
最终效果
混合模式参数说明: ps:-compose 后面的参数为混合模式
php支持支持以下混合模式参数
Multiply, Screen, Bumpmap, Divide, Plus, Minus,
ModulusAdd, ModulusSubtract, Difference, Exclusion, Lighten, Darken, LightenIntensity, DarkenIntensity,
混合模式中英文对照
1. 正常(Normal)模式
2. 溶解(Dissolve)模式
3. 变暗(Darken)模式
4. 正片叠底(Multiply)模式
5. 颜色加深(Clolor Burn)模式
6. 线性加深(Linear Burn)模式
7. 变亮(Lighten)模式
8. 滤色(Screen)模式
9. 颜色减淡(Clolor Dodge)模式
10. 线性减淡(Linear Dodge)模式
11. 叠加(Overlay)模式
12. 柔光(Soft Light)模式
13. 强光(Hard Light)模式
14. 亮光(Vivid Light)模式
15. 线性光(Linear Light)模式
16. 点光(Pin Light)模式
17. 差值(Diference)模式
18. 排除(Exclusion)模式
19. 色相(Hue)模式
20. 饱和度(Saturation)模式
21. 颜色(Color)模式
22. 亮度(Luminosity)模式