亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP添加PNG圖片背景透明水印操作類定義與用法示例

2024-05-05 00:07:22
字體:
來源:轉載
供稿:網友

本文實例講述了PHP添加PNG圖片背景透明水印操作類定義與用法。分享給大家供大家參考,具體如下:

圖片相關操作類

class ImageTool{  private $imagePath;//圖片路徑  private $outputDir;//輸出文件夾  public $memoryImg;//內存圖像  public $path;  public function __construct($imagePath, $outputDir = null)  {    $this->imagePath = $imagePath;    $this->outputDir = $outputDir;    $this->memoryImg = null;    $this->path = null;  }  /**   * 顯示內存中的圖片   * @param $image   */  public function showImage()  {    if ($this->memoryImg != null) {      $info = getimagesize($this->imagePath);      $type = image_type_to_extension($info[2], false);      header('Content-type:' . $info['mime']);      $funs = "image{$type}";      $funs($this->memoryImg);      imagedestroy($this->memoryImg);      $this->memoryImg = null;    }  }  /**   * 保存圖片   * @param $image  圖片路徑   * @return string   */  private function saveImage($image)  {    $info = getimagesize($this->imagePath);    $type = image_type_to_extension($info[2], false);    $funs = "image{$type}";    if (empty($this->outputDir)) {      $funs($image, md5($this->imagePath) . '.' . $type);      return md5($this->imagePath) . '.' . $type;    } else {      $funs($image, $this->outputDir . md5($this->imagePath) . '.' . $type);      return $this->outputDir . md5($this->imagePath) . '.' . $type;    }  }  /**   * 壓縮圖片   * @param $width 壓縮后寬度   * @param $height 壓縮后高度   * @param bool $output 是否輸出文件   * @return resource   */  public function compressImage($width, $height, $output = false)  {    $image = null;    $info = getimagesize($this->imagePath);    $type = image_type_to_extension($info[2], false);    $fun = "imagecreatefrom{$type}";    $image = $fun($this->imagePath);    imagesavealpha($image,true);//    $thumbnail = imagecreatetruecolor($width, $height);    imagealphablending($thumbnail,false);//這里很重要,意思是不合并顏色,直接用$img圖像顏色替換,包括透明色;    imagesavealpha($thumbnail,true);//    imagecopyresampled($thumbnail, $image, 0, 0, 0, 0, $width, $height, $info[0], $info[1]);    imagedestroy($image);    if ($output) {      $path = $this->saveImage($thumbnail);      $this->path = $path;    }    $this->memoryImg = $thumbnail;    return $this;  }  /**   * 為圖像添加文字標記   *   * @param $content 文本內容   * @param $size 字體大小   * @param $font 字體樣式   * @param bool $output 是否輸出文件   * @return $this   */  public function addTextmark($content, $size, $font, $output = false)  {    $info = getimagesize($this->imagePath);    $type = image_type_to_extension($info[2], false);    $fun = "imagecreatefrom{$type}";    $image = $fun($this->imagePath);    $color = imagecolorallocatealpha($image, 0, 0, 0, 80);    $posX = imagesx($image) - strlen($content) * $size / 2;    $posY = imagesy($image) - $size / 1.5;    imagettftext($image, $size, 0, $posX, $posY, $color, $font, $content);    if ($output) {      $this->saveImage($image);    }    $this->memoryImg = $image;    return $this;  }  /**   * 為圖片添加水印   *   * @param $watermark 水印圖片路徑   * @param $alpha 水印透明度(0-100)   * @param bool $output 是否輸出文件   * @return $this   */  public function addWatermark($watermark, $alpha, $output = false)  {    $image_info = getimagesize($this->imagePath);    $image_type = image_type_to_extension($image_info[2], false);    $image_fun = "imagecreatefrom{$image_type}";    $image = $image_fun($this->imagePath);    $mark_info = getimagesize($watermark);    $mark_type = image_type_to_extension($mark_info[2], false);    $mark_fun = "imagecreatefrom{$mark_type}";    $mark = $mark_fun($watermark);    $posX = imagesx($image) - imagesx($mark);    $posY = imagesy($image) - imagesy($mark);    imagesavealpha($mark, true);    imagecopymerge($image, $mark, $posX, $posY, 0, 0, $mark_info[0], $mark_info[1], $alpha);    imagesavealpha($mark, true);    if ($output) {      $path = $this->saveImage($image);      $this->path = $path;    }    $this->memoryImg = $image;    return $this;  }  //用給定角度旋轉圖像,以jpeg圖像格式為例  /**   * 水印圖片旋轉   * @param $degrees     旋轉角度   * @param bool $output   是否保存圖片   * @return $this   */  function rotateImage($degrees, $output = false)  {    $info = getimagesize($this->imagePath);    $type = image_type_to_extension($info[2], false);    $fun = "imagecreatefrom{$type}";    $image = $fun($this->imagePath);    $block = imagecreatetruecolor(170,170);//建立一個畫板    $bg = imagecolorallocatealpha($block , 0 , 0 , 0 , 127);//拾取一個完全透明的顏色    $image = imagerotate($image, $degrees, $bg ,0);    imagesavealpha($image, true);    header("Content-type: image/{$type}");    //旋轉后的圖片保存    if ($output) {      $path = $this->saveImage($image);      $this->path = $path;    }    $this->memoryImg = $image;    return $this;  }  /**  * 添加PNG透明圖片  * $bigImgPath 目標圖片路徑  * $smallImgPath 水印圖片路徑  * $width 相對于目標圖的x軸放置位置 左上角為 0  * $height 相對于目標圖的y軸放置位置 左上角為0  * $bigImgPaths 合成后的圖片路徑 若路徑名與第一張或第二張路徑相同 直接覆蓋原圖  */  public function mergerImg($bigImgPath, $smallImgPath, $width, $height, $bigImgPaths)  {    $image_kuang = imagecreatefromstring(file_get_contents($smallImgPath));    $image_photo = imagecreatefromstring(file_get_contents($bigImgPath));    //創建一個新的,和大圖一樣大的畫布    $image_3 = imageCreatetruecolor(imagesx($image_photo), imagesy($image_photo));    //為真彩色畫布創建白色背景,再設置為透明    $color = imagecolorallocate($image_3, 255, 255, 255);    imagefill($image_3, 0, 0, $color);    imageColorTransparent($image_3, $color);    /**     * 先copy圖片,再copy畫框,實現png的透明效果,將圖片嵌入到畫框里     * imagecopymerge與imagecopy的不同:     * imagecopymerge 函數可以支持兩個圖像疊加時,設置疊加層的透明度。imagecopymerge比imagecopy多一個參數,來設置透明度     * PHP內部源碼里,imagecopymerge在透明度參數為100時,直接調用imagecopy函數。     * imagecopy 函數則不支持疊加透明,但拷貝時可以保留png圖像的原透明信息,而imagecopymerge卻不支持圖片的本身的透明拷貝     * 即:使用imagecopymerge函數,可以實現打上透明度為30%的淡淡的水印圖標,但圖片本身的png就會變得像IE6不支持png透明那樣,背景不透明了。     * 如果使用imagecopy函數,可以保留圖片本身的透明信息,但無法實現30%的淡淡水印疊加,     */   imagecopyresampled($image_3,$image_photo,0,0,0,0,imagesx($image_photo),imagesy($image_photo),imagesx($image_photo),imagesy($image_photo));    imagecopy($image_3,$image_kuang, $width,$height,0,0,imagesx($image_kuang),imagesy($image_kuang));    //存儲圖片路徑    imagejpeg($image_3, $bigImgPaths);    return $bigImgPaths;  }}

控制器調用方法

public function test(){  $bigImgPath = 'ren.jpg';//原圖路徑  $waterImgPath = 'tae.png';//水印圖路徑  $imageTool = new ImageTool($waterImgPath, 'tmp/');//圖片路徑、輸出文件夾  $smallImgPath = $imageTool->rotateImage(45, true)->path;//旋轉  $width = 0;//水印所在X坐標  $height = 0;//水印所在Y坐標  $bigImgPaths = 'new.png';//生成原圖加水印新圖路徑  $path = $this->mergerImg($bigImgPath, $smallImgPath, $width, $height, $bigImgPaths);  return view('image', compact('path'));}

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区二区国产| 欧美大全免费观看电视剧大泉洋| 欧洲亚洲女同hd| 亚洲成人激情在线| 日韩欧美国产视频| 久久精品一偷一偷国产| 欧美又大粗又爽又黄大片视频| 久久久久久久久久久免费精品| 欧美激情视频给我| 国产一区二区丝袜高跟鞋图片| 国内外成人免费激情在线视频| 日本精品va在线观看| 欧美成人在线免费| 成人字幕网zmw| 亚洲国产高清福利视频| 亚洲国产精品视频在线观看| 欧美日韩国产91| 国产精品一区二区在线| 亚洲 日韩 国产第一| 色悠久久久久综合先锋影音下载| 欧美在线一区二区三区四| 精品亚洲va在线va天堂资源站| 91高清视频免费| …久久精品99久久香蕉国产| 97久久超碰福利国产精品…| 国产精品视频xxxx| 国产精品99久久99久久久二8| 欧美日韩亚洲91| 久久99国产精品自在自在app| 日韩av网站导航| 91高清视频在线免费观看| 中文字幕亚洲天堂| 日韩av在线免费观看| 欧美视频在线免费看| 岛国精品视频在线播放| 欧美精品久久一区二区| 欧美性xxxxx极品娇小| 欧美在线视频一区| 久久99视频精品| 91精品国产成人www| 国产日韩综合一区二区性色av| 久久精品夜夜夜夜夜久久| 2019国产精品自在线拍国产不卡| 日本一区二区三区四区视频| 成人久久18免费网站图片| 久久精品美女视频网站| 日本19禁啪啪免费观看www| 97人人爽人人喊人人模波多| 国产精品欧美风情| 亚洲综合小说区| 亚洲成年人在线| 亚洲男女性事视频| 欧美电影免费观看高清完整| 色综合久久精品亚洲国产| 精品网站999www| 日韩欧美在线视频| 久久理论片午夜琪琪电影网| 中文字幕亚洲综合久久| 国产精品美女www爽爽爽视频| 亚洲第一精品福利| 国产精品视频在线观看| 欧美另类暴力丝袜| 日本19禁啪啪免费观看www| 精品香蕉一区二区三区| 麻豆国产精品va在线观看不卡| 国产精品电影在线观看| 欧美精品生活片| 日韩精品一区二区三区第95| 亚洲日本中文字幕| 国产精品视频公开费视频| 欧美午夜xxx| 日韩高清有码在线| 国产成人激情小视频| 在线视频欧美日韩| 日韩va亚洲va欧洲va国产| 国产精品在线看| 91理论片午午论夜理片久久| 伊人久久精品视频| 亚洲人av在线影院| 国产精品成熟老女人| 国产精品青草久久久久福利99| 91视频免费网站| 久久久亚洲国产天美传媒修理工| 国内成人精品视频| 国产一区二区三区视频| 久久久国产一区| 日韩经典第一页| 国产国语videosex另类| 欧美成人sm免费视频| 欧美一区二区影院| 日本成人黄色片| 日韩精品高清视频| 亚洲自拍中文字幕| 69av在线播放| 久久人人爽人人爽人人片av高请| 另类专区欧美制服同性| 亚洲国内精品视频| 国产日韩欧美综合| 久久精品中文字幕一区| 日韩欧美在线国产| 亚州精品天堂中文字幕| 成人黄色在线播放| 日韩国产欧美精品一区二区三区| 国产精品午夜国产小视频| 欧洲永久精品大片ww免费漫画| 欧美中文字幕视频在线观看| 91精品免费久久久久久久久| 成人国产精品久久久久久亚洲| 亚洲精品mp4| 亚洲国产成人久久综合一区| 亚洲欧美日韩精品久久奇米色影视| 久久视频中文字幕| 欧美成人精品一区二区| 欧美激情一区二区三区成人| 欧美视频中文在线看| 日韩国产高清污视频在线观看| 欧洲亚洲女同hd| 国产精品久久久久久久久久久不卡| 成人高h视频在线| 日韩欧美一区二区三区久久| 欧美在线观看网站| 一区二区欧美日韩视频| 亚洲已满18点击进入在线看片| 精品久久久国产| 97视频国产在线| 精品国产美女在线| 一本色道久久88综合亚洲精品ⅰ| 亚洲欧洲国产伦综合| 欧美日韩在线第一页| 亚洲国产私拍精品国模在线观看| 国产精品久久久久久久久久尿| 亚洲欧洲黄色网| 欧美日韩色婷婷| 亚洲精品国产精品乱码不99按摩| 亚洲毛片在线看| 全亚洲最色的网站在线观看| 91亚洲精品久久久久久久久久久久| 欧美精品成人91久久久久久久| 色婷婷av一区二区三区在线观看| 亚洲丝袜一区在线| 国产精品入口日韩视频大尺度| 98午夜经典影视| 亚洲最新在线视频| www欧美xxxx| 欧美日韩国产色视频| 亚洲综合在线做性| 亚洲欧美日韩一区二区三区在线| 久久欧美在线电影| 亚洲国产精品久久久久秋霞蜜臀| 中文字幕在线看视频国产欧美| 美女啪啪无遮挡免费久久网站| 国产亚洲欧美日韩一区二区| 国产美女精品视频免费观看| 久久成人人人人精品欧| 一个人看的www欧美| 欧美日韩一区二区在线| 福利视频导航一区| 亚洲淫片在线视频| 日韩欧美高清在线视频| 日韩av最新在线| 国产精品日本精品| 亚洲国产一区二区三区在线观看| 成人激情春色网| 国产精品午夜国产小视频|