首先來看一下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 }
