gd庫處理圖片(將正方形轉換圓形) (調整 頭像大小)(文字圖片合併)(建立畫布)
阿新 • • 發佈:2018-11-30
/* 正方形轉換圓形圖片 * $url 小圖 (絕對路徑) * $background 背景圖 (絕對路徑) * */ function circular($url,$background){ $w = $h = 56;/* 頭像大小 */ $c = imagecolorallocate($url, 255, 0, 0); imagearc($url, $w/2, $h/2, $w, $h, 0, 360, $c); imagefilltoborder($url, 0, 0, $c, $c); imagefilltoborder($url, $w, 0, $c, $c); imagefilltoborder($url, 0, $h, $c, $c); imagefilltoborder($url, $w, $h, $c, $c); imagecolortransparent($url, $c); //!!!! $dm = imagecreatefromstring(file_get_contents($background)); imagecopymerge($dm, $url, 141,187, 0, 0, $w, $h, 100); return $dm; }
/* * 調整 頭像大小 * $srcImage 圖片路徑 (絕對路徑) * $maxwidth 動態設定圖片寬度 * $maxheight 動態設定圖片高度 * $name 後期追擊引數 (動態設定圖片名稱) * */ function resizeImage($srcImage,$maxwidth,$maxheight,$name=1) { list($width, $height, $type, $attr) = getimagesize($srcImage); switch ($type) { case 1: $img = imagecreatefromgif($srcImage); break; case 2: $img = imagecreatefromjpeg($srcImage); break; case 3: $img = imagecreatefrompng($srcImage); break; default: $img = imagecreatefrompng($srcImage); break; } $canvas = imagecreatetruecolor($maxwidth,$maxheight); // 建立一個真彩色影象 我把它理解為建立了一個畫布 imagecopyresampled($canvas,$img,0,0,0,0,$maxwidth,$maxheight,$width,$height); // 選取原圖片整個長寬上的畫素,將原圖片左上角和畫布左上角對齊,畫布寬100px,高100px。 // 這樣設定是縮小或放大原圖片。 如果原圖片寬或高比畫布大就會縮小,如果原圖片寬或高比畫布小就會放大。 // 如果想擷取圖片,不想放大或縮小。 就要將最後兩個引數設定成分別和畫布寬和高相等。 像這樣:imagecopyresampled($canvas,$sourceImage,0,0,0,0,$newWidth,$newHeight,$newWidth,$newHeight); // 如果想控制從哪裡開始擷取,就要設定後面兩個“0”。 前面一個“0”是原圖片上X軸座標,後面一個是Y軸座標。 比如,想從原圖片X軸100px,Y軸50px的點開始擷取。就要這樣設定:imagecopyresampled($canvas,$sourceImage,0,0,100,50,$newWidth,$newHeight,$newWidth,$newHeight); return $canvas;//返回引數為已經開啟的圖片格式 }
/* 文字圖片合併 * $filename 圖片路徑 * $write 文字 * $leftOffset 左邊距 * $rightOffset 上邊距 */ function wenzi($filename,$write='無名者',$leftOffset=10,$rightOffset=30){ $qCodeImg = imagecreatefromstring(file_get_contents('./1.png')); $font = './simsun.ttc';//字型 $black = imagecolorallocate($qCodeImg, 0x00, 0x00, 0x00);//字型顏色 imagefttext($qCodeImg, 13, 0, $leftOffset, $rightOffset, $black, $font,$write); //ob_start(); header('Content-Type:image/png'); imagepng($qCodeImg); imagedestroy($qCodeImg); //$data = ob_get_clean(); //$qr = "data:image/png;base64,".base64_encode($data); //return $qr; }
/*
* 建立畫布併合並
*
*
* */
function test(){
$w = 50;//圖片與畫布左間距
$h = 50;//圖片與畫布上間距
$canvas_k = 370;//畫布寬度
$canvas_g = 650;//畫布高度
$bigImg = imagecreatetruecolor($canvas_k,$canvas_g);/* 建立畫布 */
//增加一個白色的底,不然新建的畫布是黑色的
$white = imagecolorallocate($bigImg, 255, 255, 255);
imagefill($bigImg, 0, 0, $white);
$qCodeImg = imagecreatefromstring(file_get_contents('./1.png'));
list($qCodeWidth, $qCodeHight) = getimagesize('./1.png');
//$qCodeWidth 圖片的寬度 $qCodeHight 圖片的高度(超出圖片本身大小,則會由黑色底部填充)
imagecopy($bigImg,$qCodeImg, $w,$h, 0, 0,$qCodeWidth, $qCodeHight);
//輸出圖片
header("Content-type: image/png");
imagepng($bigImg);
}