使用許多編程語言時,你通常只能使用面向對象或面向過程二者之一的編程方式。而在PHP中,你可以自由選擇或混用,下面通過面向對象與面向過程兩種方法給圖片添加水印,需要的朋友可以參考下
目前絕大多數PHP程序員使用面向過程的方式,因為解析WEB頁面本身就非常“過程化”(從一個標簽到另一個標簽)。在HTML中嵌入過程處理代碼是很直接自然的作法,所以PHP程序員通常使用這種方式。
如果你是剛接觸PHP,用面向過程的風格來書寫代碼很可能是你唯一的選擇。但是如果你經常上PHP論壇和新聞組的話,你應該會看到有關“對象”的文章。你也可能看到過如何書寫面向對象的PHP代碼的教程?;蛘吣阋部赡芟螺d過一些現成的類庫,并嘗試著去實例化其中的對象和使用類方法--盡管你可能沒有真正理解這些類為什么可以工作,或者為什么需要使用面向對象的方法來實現功能。
應該使用“面向對象”的風格還是“面向過程”的風格?雙方各有支持者。像“對象是低效的”或“對象非常棒”這樣的議論也時有耳聞。本文不嘗試輕易判定兩種方法的哪種具有絕對的優勢,而是要找出每種方法的優缺點。
1:面向對象的實現利用php給圖片添加水印方法
- class Image_class {
- private $image;
- private $info;
- /**
- * @param $src:圖片路徑
- * 加載圖片到內存中
- */
- function __construct($src){
- $info = getimagesize($src);
- $type = image_type_to_extension($info[2],false);
- $this -> info =$info;
- $this->info['type'] = $type;
- $fun = "imagecreatefrom" .$type;
- $this -> image = $fun($src);
- }
- /**
- * @param $fontsize: 字體大小
- * @param $x: 字體在圖片中的x位置
- * @param $y: 字體在圖片中的y位置
- * @param $color: 字體的顏色是一個包含rgba的數組
- * @param $text: 想要添加的內容
- * 操作內存中的圖片,給圖片添加文字水印
- */
- public function fontMark($fontsize,$x,$y,$color,$text){
- $col = imagecolorallocatealpha($this->image,$color[0],$color[1],$color[2],$color[3]);
- imagestring($this->image,$fontsize,$x,$y,$text,$col);
- }
- /*
- * 輸出圖片到瀏覽器中
- */
- public function show(){
- header('content-type:' . $this -> info['mime']);
- $fun='image' . $this->info['type'];
- $fun($this->image);
- }
- /**
- * 銷毀圖片
- */
- function __destruct(){
- imagedestroy($this->image);
- }
- }
- //對類的調用
- $obj = new Image_class('001.png');
- $obj->fontMark(20,20,30,array(255,255,255,60),'hello');
- $obj->show();
2: 面向過程的編寫利用php給圖片添加水印方法:
- //指定圖片路徑
- $src = '001.png';
- //獲取圖片信息
- $info = getimagesize($src);
- //獲取圖片擴展名
- $type = image_type_to_extension($info[2],false);
- //動態的把圖片導入內存中
- $fun = "imagecreatefrom{$type}";
- $image = $fun('001.png');
- //指定字體顏色
- $col = imagecolorallocatealpha($image,255,255,255,50);
- //指定字體內容
- $content = 'helloworld';
- //給圖片添加文字
- imagestring($image,5,20,30,$content,$col);
- //指定輸入類型
- header('Content-type:'.$info['mime']);
- //動態的輸出圖片到瀏覽器中
- $func = "image{$type}";
- $func($image);
- //銷毀圖片
- imagedestroy($image);
以上代碼示例是介紹php面向對象與面向過程兩種方法給圖片添加文字水印,希望大家喜歡。
新聞熱點
疑難解答