PHP 圖片合成(2合1)

Purgatory001發表於2018-08-30

原文連結https://www.cnblogs.com/fengms/p/5422070.html

/**
 * 圖片合併
 * */
ob_clean();

header('Content-type:image/png');

//如果遇到問題需要找bug,把header放最後
/*
  $str = "1\n2\n3\n";
  $im = imagecreate(100,120);
  $white = imagecolorallocate($im,0xFF,0xFF,0xFF);
  imagecolortransparent($im,$white);  //imagecolortransparent() 設定具體某種顏色為透明色,若註釋
  $black = imagecolorallocate($im,0x00,0x00,0x00);

  imagettftext($im,15,0,50,40,$black,"simkai.ttf",$str); //字型設定部分linux和windows的路徑可能不同
  header("Content-type:image/png");
  imagepng($im);//文字生成的圖片
 */

//判斷是哪種圖片
function isjpg($pic_path) {
    $pathInfo = pathinfo($pic_path);
    switch (strtolower($pathInfo['extension'])) {
        case 'jpg':
        case 'jpeg':
            $imagecreatefromjpeg = 'imagecreatefromjpeg';
            break;
        case 'png':
            $imagecreatefromjpeg = 'imagecreatefrompng';
            break;
        case 'gif':
        default:
            $imagecreatefromjpeg = 'imagecreatefromstring';
            break;
    }
    return $imagecreatefromjpeg;
}
/**
 * 圖片2合一
 * @param type $path_1 人物圖片
 * @param type $path_2 裝備圖片
 * @param type $width   圖片二距離x軸位置
 * @param type $height  圖騙而距離y軸位置
 */
function img21($path_1, $path_2,$width=200,$height=200) {
    $p1 = isjpg($path_1);
    $p2 = isjpg($path_2);
//將人物和裝備圖片分別取到兩個畫布中
    $image_1 = $p1($path_1);
    $image_2 = $p2($path_2);
//建立一個和人物圖片一樣大小的真彩色畫布(ps:只有這樣才能保證後面copy裝備圖片的時候不會失真)
    $image_3 = imageCreatetruecolor(imagesx($image_1), imagesy($image_1));
//為真彩色畫布建立白色背景,再設定為透明
    $color = imagecolorallocate($image_3, 255, 255, 255);
    imagefill($image_3, 0, 0, $color);
    imageColorTransparent($image_3, $color);
//首先將人物畫布取樣copy到真彩色畫布中,不會失真
    imagecopyresampled($image_3, $image_1, 0, 0, 0, 0, imagesx($image_1), imagesy($image_1), imagesx($image_1), imagesy($image_1));
//再將裝備圖片copy到已經具有人物影象的真彩色畫布中,同樣也不會失真
    imagecopymerge($image_3, $image_2, $width, $height, 0, 0, imagesx($image_2), imagesy($image_2), 100);
//將畫布儲存到指定的gif檔案
    imagegif($image_3);
}

$path_1 = "./20180830/15356120713227.jpg";
$path_2 = "./20180830/15356133061333.jpg";
img21($path_1,$path_2,1,1);  // 圖2插入到圖1 中

相關文章