ホームページ > バックエンド開発 > PHPチュートリアル > PHPで背景画像に円形のロゴアイコンを追加する方法

PHPで背景画像に円形のロゴアイコンを追加する方法

高洛峰
リリース: 2023-03-03 13:50:02
オリジナル
1572 人が閲覧しました

この記事の例では、PHP で背景画像に円形のロゴ アイコンを追加する方法を説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

手順について説明します:

合計 3 つのステップがあります:

1. ロゴを固定サイズの正方形の画像に圧縮します
2.ロゴを丸いロゴに変換します
3. ロゴを背景画像と結合します

これ以上のナンセンスはなく、コードに移動するだけです:

<?php
/**
 * 作者:friker
 * 开发时间:20160516
 * 功能:图片处理
 *
 */
class ImageController extends CI_Controller{
  public function __construct()
  {
    parent::__construct();
    date_default_timezone_set(&#39;Asia/Shanghai&#39;);
    error_reporting( E_ALL&~E_NOTICE&~E_WARNING);
    $this->load->library(&#39;curl&#39;);
  }
  /**
   * @todo : 本函数用于 将方形的图片压缩后
   *     再裁减成圆形 做成logo
   *     与背景图合并
   * @return 返回url
   */
  public function index(){
    //头像
    $headimgurl = &#39;a.jpg&#39;;
    //背景图
    $bgurl = &#39;./aa.png&#39;;
    $imgs[&#39;dst&#39;] = $bgurl;
    //第一步 压缩图片
    $imggzip = $this->resize_img($headimgurl);
    //第二步 裁减成圆角图片
    $imgs[&#39;src&#39;] = $this->test($imggzip);
    //第三步 合并图片
    $dest = $this->mergerImg($imgs);
  }
  public function resize_img($url,$path=&#39;./&#39;){
    $imgname = $path.uniqid().&#39;.jpg&#39;;
    $file = $url;
    list($width, $height) = getimagesize($file); //获取原图尺寸
    $percent = (110/$width);
    //缩放尺寸
    $newwidth = $width * $percent;
    $newheight = $height * $percent;
    $src_im = imagecreatefromjpeg($file);
    $dst_im = imagecreatetruecolor($newwidth, $newheight);
    imagecopyresized($dst_im, $src_im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    imagejpeg($dst_im, $imgname); //输出压缩后的图片
    imagedestroy($dst_im);
    imagedestroy($src_im);
    return $imgname;
  }
  //第一步生成圆角图片
  public function test($url,$path=&#39;./&#39;){
    $w = 110; $h=110; // original size
    $original_path= $url;
    $dest_path = $path.uniqid().&#39;.png&#39;;
    $src = imagecreatefromstring(file_get_contents($original_path));
    $newpic = imagecreatetruecolor($w,$h);
    imagealphablending($newpic,false);
    $transparent = imagecolorallocatealpha($newpic, 0, 0, 0, 127);
    $r=$w/2;
    for($x=0;$x<$w;$x++)
      for($y=0;$y<$h;$y++){
        $c = imagecolorat($src,$x,$y);
        $_x = $x - $w/2;
        $_y = $y - $h/2;
        if((($_x*$_x) + ($_y*$_y)) < ($r*$r)){
          imagesetpixel($newpic,$x,$y,$c);
        }else{
          imagesetpixel($newpic,$x,$y,$transparent);
        }
      }
    imagesavealpha($newpic, true);
    // header(&#39;Content-Type: image/png&#39;);
    imagepng($newpic, $dest_path);
    imagedestroy($newpic);
    imagedestroy($src);
    unlink($url);
    return $dest_path;
  }
  //php 合并图片
  public function mergerImg($imgs,$path=&#39;./&#39;) {
    $imgname = $path.rand(1000,9999).uniqid().&#39;.jpg&#39;;
    list($max_width, $max_height) = getimagesize($imgs[&#39;dst&#39;]);
    $dests = imagecreatetruecolor($max_width, $max_height);
    $dst_im = imagecreatefrompng($imgs[&#39;dst&#39;]);
    imagecopy($dests,$dst_im,0,0,0,0,$max_width,$max_height);
    imagedestroy($dst_im);
    $src_im = imagecreatefrompng($imgs[&#39;src&#39;]);
    $src_info = getimagesize($imgs[&#39;src&#39;]);
    imagecopy($dests,$src_im,270,202,0,0,$src_info[0],$src_info[1]);
    imagedestroy($src_im);
    // var_dump($imgs);exit;
    // header("Content-type: image/jpeg");
    imagejpeg($dests,$imgname);
    // unlink($imgs[&#39;dst&#39;]);
    unlink($imgs[&#39;src&#39;]);
    return $imgname;
  }
}
ログイン後にコピー

結果表示:

PHPで背景画像に円形のロゴアイコンを追加する方法


関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート