使用PHP添加圓形頭像


首先來看一下PHP怎樣生成一個圓形透明的圖片

 1     function circle($url){
 2 
 3         $w = 430;  $h=430; // original size
 4 
 5         $path = dirname(__FILE__).'/';
 6 
 7         $dest_path=$path.time().'.jpg';
 8 
 9         $src = imagecreatefromstring(file_get_contents($url)); //獲取資源文件
10 
11         $newpic = imagecreatetruecolor($w,$h); 
12         //建立的是一幅大小為 x和 y的黑色圖像(默認為黑色),如想改變背景顏色則需要用填充顏色函數imagefill($img,0,0,$color);
13         // $img = imagecreatetruecolor(100,100);    //創建真彩圖像資源
14         // $color = imagecolorAllocate($img,200,200,200);   //分配一個灰色
15         // imagefill($img,0,0,$color);
16 
17 
18         // 啟用混色模式
19         imagealphablending($newpic,false); //設定圖像的混色模式
20 
21         //imagealphablending() 允許在真彩色圖像上使用兩種不同的繪畫模式。
22         // 在混色(blending)模式下,alpha 通道色彩成分提供給所有的繪畫函數,例如 imagesetpixel() 決定底層的顏色應在何種程度上被允許照射透過。作為結果,GD 自動將該點現有的顏色和畫筆顏色混合,並將結果儲存在圖像中。結果的像素是不透明的。
23         // 在非混色模式下,畫筆顏色連同其 alpha 通道信息一起被拷貝,替換掉目標像素。混色模式在畫調色板圖像時不可用。
24         // 如果 blendmode 為 TRUE,則啟用混色模式,否則關閉。成功時返回 TRUE, 或者在失敗時返回 FALSE。
25 
26 
27         $transparent = imagecolorallocatealpha($newpic, 233, 40, 59, 0);
28 
29         //imagecolorallocatealpha(resource $image , int $red , int $green , int $blue, int $alpha )
30         // $image 圖像資源,通過創造的圖像功能,如,一返回imagecreatetruecolor()。
31         // $red 紅色分量的價值。
32         // $green 價值的綠色成分。
33         // $blue 藍色成分的價值。
34         // $alpha 一個介於0和127的價值。 0表示完全不透明,而127表示完全透明。
35 
36 
37         $r=$w/2;
38         for($x=0;$x<$w;$x++)
39             for($y=0;$y<$h;$y++){
40                 $c = imagecolorat($src,$x,$y);
41                 $_x = $x - $w/2;
42                 $_y = $y - $h/2;
43                 if((($_x*$_x) + ($_y*$_y)) < ($r*$r)){
44                     imagesetpixel($newpic,$x,$y,$c);
45                 }else{
46                     imagesetpixel($newpic,$x,$y,$transparent);
47                     //imagesetpixel() 在 image 圖像中用 color 顏色在 x,y 坐標(圖像左上角為 0,0)上畫一個點。
48                 }
49             }
50 
51         //imagesavealpha() 設置標記以在保存 PNG 圖像時保存完整的 alpha 通道信息(與單一透明色相反)
52         imagesavealpha($newpic, true);
53         // header('Content-Type: image/png');
54         imagepng($newpic, $dest_path);
55         imagedestroy($newpic);
56         imagedestroy($src);
57 
58         // unlink() 函數刪除文件。
59         // 若成功,則返回 true,失敗則返回 false。
60         // unlink($url);
61 
62         return $dest_path;
63 
64     }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM