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)模式