PHP實現可添加浮水印與產生縮圖的圖片處理工具類_php技巧

來源:互聯網
上載者:User
這篇文章主要介紹了PHP實現可添加浮水印與產生縮圖的圖片處理工具類,涉及php針對圖片的顯示、儲存、壓縮、浮水印等相關操作技巧,需要的朋友可以參考下

本文執行個體講述了PHP實現可添加浮水印與產生縮圖的圖片處理工具類。分享給大家供大家參考,具體如下:

ImageTool.class.php

<?phpclass ImageTool{  private $imagePath;//圖片路徑  private $outputDir;//輸出檔案夾  private $memoryImg;//記憶體配置圖像  public function __construct($imagePath, $outputDir = null)  {    $this->imagePath = $imagePath;    $this->outputDir = $outputDir;    $this->memoryImg = 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   */  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);    } else {      $funs($image, $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);    $thumbnail = imagecreatetruecolor($width, $height);    imagecopyresampled($thumbnail, $image, 0, 0, 0, 0, $width, $height, $info[0], $info[1]);    imagedestroy($image);    if ($output) {      $this->saveImage($thumbnail);    }    $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);    imagecopymerge($image, $mark, $posX, $posY, 0, 0, $mark_info[0], $mark_info[1], $alpha);    if ($output) {      $this->saveImage($image);    }    $this->memoryImg = $image;    return $this;  }}

ImageTool使用

首先匯入ImageTool工具:

require_once 'ImageTool.class.php';

然後執行個體化ImageTool對象:

$imageTool = new ImageTool('img/oppman.jpeg', 'out/');//圖片路徑、輸出檔案夾

一、產生壓縮圖片

$imageTool->compressImage(350, 250, true);//壓縮寬度、壓縮高度、是否儲存$imageTool->showImage();

二、添加文字浮水印

$imageTool->addTextmark('一拳超人', 50, 'res/micro.ttf', true);//內容、尺寸、字型、是否儲存$imageTool->showImage();

三、添加圖片浮水印

$imageTool->addWatermark('res/logo.jpeg', 100, true);//浮水印路徑、透明度、是否儲存$imageTool->showImage();

僅當做臨時映像輸出:

$imageTool->addTextmark('快捷輸出', 50, 'res/micro.ttf')->showImage();

PS:這裡再為大家推薦幾款比較實用的圖片處理工具供大家參考使用:

線上圖片裁剪/產生工具:
http://tools.jb51.net/aideddesign/imgcut

線上圖片轉換BASE64工具:
http://tools.jb51.net/transcoding/img2base64

ICO表徵圖線上產生工具:
http://tools.jb51.net/aideddesign/ico_img

線上Email郵箱表徵圖製作工具:
http://tools.jb51.net/email/emaillogo

線上圖片格式轉換(jpg/bmp/gif/png)工具:
http://tools.jb51.net/aideddesign/picext

您可能感興趣的文章:

PHP實現按之字形順序列印二叉樹的方法講解

PHP擷取二叉樹鏡像的方法講解

PHP擷取鏈表中倒數第K個節點的方法講解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.