首頁 後端開發 php教程 php图片水印添加,压缩,剪切的封装类

php图片水印添加,压缩,剪切的封装类

Jun 23, 2016 pm 01:28 PM

  php对图片文件的操作主要是利用GD库扩展。当我们频繁利用php对图片进行操作时,会自然封装很多函数,否则会写太多重复的代码。当有很多对图片的相关函数的时候,我们可以考虑将这些函数也整理一下,因而就有了封装成类的想法。

  操作图片主要历经四个步骤:

  1. 打开图片
  2. 操作图片
  3. 输出图片
  4. 销毁图片

  1,3,4三个步骤每次都要写,每次又都差不多。真正需要变通的只有操作图片的这一步骤了。操作图片又往往通过1或多个主要的GD函数来完成。

  本文封装类里面的四种方法,文字水印(imagettftext()),图片水印(imagecopymerge()),图片压缩,图片剪切(imagecopyresampled()),其余的常用GD函数便不赘述。直接上代码:

<?php class Image{        private $info;    private $image;    public $type;    public function __construct($src)    {        $this->info=getimagesize($src);        $this->type=image_type_to_extension($this->info['2'],false);        $fun="imagecreatefrom{$this->type}";        $this->image=$fun($src);    }    /**     * 文字水印     * @param  [type]  $font     字体     * @param  [type]  $content  内容     * @param  [type]  $size     文字大小     * @param  [type]  $col      文字颜色(四元数组)     * @param  array   $location 位置      * @param  integer $angle    倾斜角度     * @return [type]                */    public function fontMark($font,$content,$size,$col,$location,$angle=0){        $col=imagecolorallocatealpha($this->image, $col['0'], $col['1'], $col['2'],$col['3']);        imagettftext($this->image, $size, $angle, $location['0'], $location['1'], $col,$font,$content);    }        /**     * 图片水印     * @param  [type] $imageMark 水印图片地址     * @param  [type] $dst       水印图片在原图片中的位置     * @param  [type] $pct       透明度     * @return [type]                 */    public function imageMark($imageMark,$dst,$pct){        $info2=getimagesize($imageMark);        $type=image_type_to_extension($info2['2'],false);        $func2="imagecreatefrom".$type;        $water=$func2($imageMark);        imagecopymerge($this->image, $water, $dst[0], $dst[1], 0, 0, $info2['0'], $info2['1'], $pct);        imagedestroy($water);    }    /**     * 压缩图片     * @param  [type] $thumbSize 压缩图片大小     * @return [type]            [description]     */    public function thumb($thumbSize){        $imageThumb=imagecreatetruecolor($thumbSize[0], $thumbSize[1]);                imagecopyresampled($imageThumb, $this->image, 0, 0, 0, 0, $thumbSize[0], $thumbSize[1], $this->info['0'], $this->info['1']);        imagedestroy($this->image);        $this->image=$imageThumb;    }    /**    * 裁剪图片     * @param  [type] $cutSize  裁剪大小     * @param  [type] $location 裁剪位置     * @return [type]           [description]     */     public function cut($cutSize,$location){         $imageCut=imagecreatetruecolor($cutSize[0],$cutSize[1]);         imagecopyresampled($imageCut, $this->image, 0, 0, $location[0], $location[1],$cutSize[0],$cutSize[1],$cutSize[0],$cutSize[1]);         imagedestroy($this->image);         $this->image=$imageCut;     }    /**     * 展现图片     * @return [type] [description]     */    public function show(){        header("content-type:".$this->info['mime']);        $funn="image".$this->type;        $funn($this->image);    }    /**     * 保存图片 * @param  [type] $newname 新图片名 * @return [type]          [description] */     public function save($newname){         header("content-type:".$this->info['mime']);         $funn="image".$this->type;         $funn($this->image,$newname.'.'.$this->type);     }     public function __destruct(){         imagedestroy($this->image);     } } ?>
登入後複製

  如果还需要其他操作,只需要再往这个类里面添加就好啦~~

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在 Windows 11 上啟用或停用記憶體壓縮功能 如何在 Windows 11 上啟用或停用記憶體壓縮功能 Sep 19, 2023 pm 11:33 PM

使用Windows11上的記憶體壓縮,即使RAM量有限,您的裝置也會窒息運作。在本文中,我們將向您展示如何在Windows11上啟用或停用記憶體壓縮。什麼是記憶體壓縮?記憶體壓縮是一種在將資料寫入RAM之前壓縮資料的功能,從而在其上提供更多儲存空間。當然,儲存在實體記憶體中的更多資料轉化為更快的系統運作和更好的整體效能。此功能在Windows11中預設為啟用,但如果它以某種方式未處於活動狀態,您可以停用或重新啟用它。如何在Windows11中啟用記憶體壓縮?按一下搜尋欄,鍵入powershell,然後從結果中單

7-zip最大壓縮率設定,7zip如何壓縮到最小 7-zip最大壓縮率設定,7zip如何壓縮到最小 Jun 18, 2024 pm 06:12 PM

發現某下載網站下載的壓縮包,解壓縮後再打包會比原來的壓縮包大一些,小的幾十Kb的差別,大的幾十Mb的差別,如果上傳到雲盤或付費空間,文件少無所謂,文件多的話,大大的增加儲存成本。特意研究了下,有需要的可以藉鏡。壓縮等級:9-極限壓縮字典大小:256或384,字典越壓縮越慢,256MB之前壓縮率差異較大,384MB後壓縮率無差別單字大小:最大273參數:f=BCJ2,測試加參數壓縮率會高一些

pr檔案的壓縮類型不受支援怎麼辦 pr檔案的壓縮類型不受支援怎麼辦 Mar 23, 2023 pm 03:12 PM

pr檔案的壓縮類型不受支援的原因及解決方法:1、精簡版pr把許多視訊編碼器精簡掉了,重新安裝使用完整版Premiere;2、視訊編碼不規範導致的,可以透過格式工廠,將影片轉換成WMV格式即可。

如何使用Nginx進行HTTP請求的壓縮和解壓縮 如何使用Nginx進行HTTP請求的壓縮和解壓縮 Aug 02, 2023 am 10:09 AM

如何使用Nginx進行HTTP請求的壓縮和解壓縮Nginx是一款高效能的Web伺服器和反向代理伺服器,其功能強大且靈活。在處理HTTP請求時,可以使用Nginx提供的gzip和gunzip模組對請求進行壓縮和解壓縮,以減少資料傳輸量,並提高請求回應速度。本文將介紹如何使用Nginx進行HTTP請求的壓縮和解壓縮的具體步驟,並提供對應的程式碼範例。配置gzip模組

linux怎麼顯示壓縮檔案訊息 linux怎麼顯示壓縮檔案訊息 Feb 13, 2023 am 10:20 AM

顯示方法:1、用Vim編輯器,語法「vim 壓縮檔案」;2、用「tar -tf 壓縮檔案」指令;3、用「rar v 壓縮檔案」指令;4、用「unrar l 壓縮檔案」指令;5、用「zip -sf 壓縮檔案」指令;6、用「unzip -l 壓縮檔案」指令;7、用「zipinfo 壓縮檔案」指令;8、用「zcat 壓縮檔案」指令;9、用「zless壓縮檔案」;10、用less。

Golang實現圖片品質壓縮的方法 Golang實現圖片品質壓縮的方法 Aug 17, 2023 pm 10:28 PM

Golang實現圖片品質壓縮的方法隨著網路的快速發展,圖片成為了人們在網路上交流和訊息傳遞的重要媒介之一。然而,高解析度的圖片不僅會佔用大量的儲存空間,而且在網路傳輸時也會增加載入的時間,為使用者體驗帶來一定的影響。因此,在實際應用中,對圖片進行壓縮是一項非常有意義的工作。本文將介紹如何使用Golang實作對圖片品質進行壓縮的方法。首先,我們需要導入Gola

減小win10錄影檔大小的建議 減小win10錄影檔大小的建議 Jan 04, 2024 pm 12:05 PM

許多的小夥伴都需要錄影畫面進行辦公室或傳輸文件,但是有時候會出現文件過大的問題製造了很多麻煩,下面就給大家帶來了文件過大的解決方法,一起看看吧。 win10錄影檔太大怎麼辦:1.下載軟體格式工廠來進行壓縮檔。下載位址>>2、進入主頁面,點選「影片-MP4」選項。 3、在轉換格式頁面中點選“新增檔案”,選擇要壓縮的MP4檔案。 4、點擊頁面“輸出配置”,透過輸出品質來壓縮檔案。 5、下拉配置清單選擇「低品質和大小」點選「確定」。 6、點選「確定」完成影片檔案的導入。 7.點選「開始」進行轉換。 8.完成後即可

Linux伺服器日誌過大,如何解決? Linux伺服器日誌過大,如何解決? Jun 29, 2023 pm 11:09 PM

Linux伺服器上常見的日誌檔案太大問題及其解決方法隨著互聯網的快速發展和伺服器的廣泛應用,伺服器日誌檔案越來越大成為一個常見的問題。大量的日誌資料不僅佔用磁碟空間,還可能影響伺服器的效能和運作穩定性。本文將討論Linux伺服器上常見的日誌檔案太大問題,並提供一些解決方法。一、常見的日誌檔案在Linux伺服器上,常見的日誌檔案包括系統日誌、應用程式日誌、We

See all articles