多功能的php圖片處理類,php圖形圖像處理技術

本文目錄一覽:

我這有個已經實現了php上傳圖片的功能的類,但是現在還要給上傳的每張圖片加水印,請高手幫忙……

給你一個封裝的圖片處理的類吧!包含縮放和剪切功能!

構造方法只需要傳遞圖片所在路徑即可!對應方法及參數都有注釋!

請給予最佳答案!!

?php

class Img{

private $path;

//構造方法,初始化圖片信息

function __construct($path=’./imgs/’){

$this-path=rtrim($path,’/’).’/’;

}

/**

* 對圖片進行縮放

* 參數對應:文件名 縮放後寬度 縮放後高度 縮放後圖片名前綴

*/

function thumb($name,$width,$height,$pre=”th_”){

if(file_exists($this-path.$name)){

$imgInfo=$this-getInfo($name);

$img=$this-getImg($name,$imgInfo);

$newSize=$this-getNewSize($name,$width,$height,$imgInfo);

$newImg=$this-getNewInfo($img,$newSize,$imgInfo);

return $this-createNewImage($newImg, $pre.$name, $imgInfo);

}else{

echo ‘圖片’.$this-path.$name.’不存在,請檢查文件名及路徑是否填寫正確’;

}

}

//輔助圖片處理,獲取圖片的寬、高、類型屬性

private function getInfo($name){

$temp=getImageSize($this-path.$name);

$imgInfo[‘width’]=$temp[0];

$imgInfo[‘height’]=$temp[1];

$imgInfo[‘type’]=$temp[2];

return $imgInfo;

}

//輔助圖片處理,獲取創建的圖片資源

private function getImg($name,$imgInfo){

$src=$this-path.$name;

switch($imgInfo[‘type’]){

case 1:

$img=imagecreatefromgif($src);

break;

case 2:

$img=imagecreatefromjpeg($src);

break;

case 3:

$img=imagecreatefrompng($src);

break;

}

return $img;

}

//輔助圖片處理,獲取創建的圖片資源

private function getNewSize($name,$width,$height,$imgInfo){

$newSize[‘width’]=$imgInfo[‘width’];

$newSize[‘height’]=$imgInfo[‘height’];

if($width$imgInfo[‘width’]){

$newSize[‘width’]=$width;

}

if($height$imgInfo[‘height’]){

$newSize[‘height’]=$height;

}

if($imgInfo[“width”]*$newSize[“width”] $imgInfo[“height”] * $newSize[“height”]){

$newSize[“height”]=round($imgInfo[“height”]*$newSize[“width”]/$imgInfo[“width”]);

}else{

$newSize[“width”]=round($imgInfo[“width”]*$newSize[“height”]/$imgInfo[“height”]);

}

print_r($newSize);

return $newSize;

}

//輔助圖片處理,獲取縮放的圖片資源

private function getNewInfo($img,$newSize,$imgInfo){

$newImg=imagecreatetruecolor($newSize[‘height’],$newSize[‘height’]);

$otsc=imagecolortransparent($img);

if($otsc =0 $otsc = imagecolorstotal($img)){

$tran=imagecolorsforindex($img, $otsc);

$newt=imagecolorallocate($newImg, $tran[“red”], $tran[“green”], $tran[“blue”]);

imagefill($newImg, 0, 0, $newt);

imagecolortransparent($newImg, $newt);

}

imagecopyresized($newImg, $img, 0, 0, 0, 0, $newSize[“width”], $newSize[“height”], $imgInfo[“width”], $imgInfo[“height”]);

imagedestroy($img);

return $newImg;

}

//輔助圖片處理,創建新的圖片

private function createNewImage($newImg, $newName, $imgInfo){

switch($imgInfo[“type”]){

case 1://gif

$result=imageGif($newImg, $this-path.$newName);

break;

case 2://jpg

$result=imageJPEG($newImg, $this-path.$newName);

break;

case 3://png

$return=imagepng($newImg, $this-path.$newName);

break;

}

imagedestroy($newImg);

return $newName;

}

/**

* 對圖片加水印

* 參數對應:需水印圖片 水印圖片 加水印後圖片名前綴

*/

function waterMark($name,$wname,$pre=”wa_”){

if(file_exists($this-path.$name)){

if(file_exists($this-path.$wname)){

$info=$this-getInfo($name);

$winfo=$this-getInfo($wname);

if($p=$this-getPosition($info,$winfo)){

$img=$this-getImg($name,$info);

$wImg=$this-getImg($wname,$winfo);

imagecopy($img, $wImg, $p[“x”], $p[“y”], 0, 0, $winfo[“width”], $winfo[“height”]);

imagedestroy($wImg);

return $this-createNewImage($img,$pre.$name,$info);

}else{

echo ‘水印圖片尺寸大於原圖片尺寸’;

}

}else{

echo ‘水印圖片’.$this-path.$wname.’不存在,請檢查文件名及路徑是否填寫正確’;

}

}else{

echo ‘圖片’.$this-path.$name.’不存在,請檢查文件名及路徑是否填寫正確’;

}

}

//輔助圖片處理,獲取水印圖片應處坐標

private function getPosition($info,$winfo){

if($info[‘width’]$winfo[‘width’]||$info[‘height’]$winfo[‘height’]){

return false;

}

$x=$info[‘width’]-$winfo[‘width’];

$y=$info[‘height’]-$winfo[‘height’];

return array(‘x’=$x,’y’=$y);

}

/**

* 圖片剪切函數

* 對應參數:原圖片 X坐標 Y坐標 寬度 高度

*/

function cut($name,$x,$y,$width,$height,$pre=’cx_’){

$imgInfo=$this-getInfo($name);

$img=$this-getImg($name,$imgInfo);

$newImg=imagecreatetruecolor($width,$height);

imagecopyresampled($newImg,$img,0,0,$x,$y,$width,$height,$width,$height);

return $this-createNewImage($newImg, $pre.$name, $imgInfo);

}

}

求PHP圖片處理類。

裁剪圖片。合併,可以通過相應的函數進行,先確定圖片的後綴,再確定使用的函數,具體可查看手冊,getimagesize,imagecreatefromgif,imagecreatefromjpeg,imagecopy

PHP圖像處理函數有哪些

php圖像處理函數大全

php圖片處理代碼分享,包括縮放、剪裁、縮放、翻轉、旋轉、透明、銳化等。需要的朋友可以參考下

一、創建圖片資源

imagecreatetruecolor(width,height);

imagecreatefromgif(圖片名稱);

imagecreatefrompng(圖片名稱);

imagecreatefromjpeg(圖片名稱);畫出各種圖像

imagegif(圖片資源,保存路徑);

imagepng()

imagejpeg();

二、獲取圖片屬性

imagesx(res//寬度

imagesy(res//高度

getimagesize(文件路徑)

返回一個具有四個單元的數組。索引

0 包含圖像寬度的像素值,索引 1 包含圖像高度的像素值。索引 2 是圖像類型的標記:1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 =

PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10

= JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM。這些標記與 PHP 4.3.0 新加的

IMAGETYPE 常量對應。索引 3 是文本字元串,內容為「height=”yyy” width=”xxx”」,可直接用於 IMG

標記。

銷毀圖像資源

imagedestroy(圖片資源);

三、透明處理

PNG、jpeg透明色都正常,只有gif不正常

imagecolortransparent(resource

image [,int

color])//將某個顏色設置成透明色

imagecolorstotal()

imagecolorforindex();

四、圖片的裁剪

imagecopyresized()

imagecopyresampled();

五、加水印(文字、圖片)

字元串編碼轉換string iconv ( string $in_charset ,

string $out_charset , string $str )

六、圖片旋轉

imagerotate();//制定角度的圖片翻轉

七、圖片的翻轉

沿X軸 沿Y軸翻轉

八、銳化

imagecolorsforindex()

imagecolorat()

PHP 圖片處理

圖片路徑一定要基於當前php運行所在的路徑去寫,./圖片 是當前目錄,../圖片 是上級目錄,注意規範

php圖片處理類怎麼用

Grafika是一個PHP圖像處理庫,是基於Imagick和GD,可以用於改變圖片大小,剪裁,比較,添加水印等等功能。還有感知哈希,高級圖像過濾,繪製貝塞爾曲線等功能,可謂非常強大。

php 怎麼上傳完圖片之後,給這個圖片打水印,並且保存在另一個文件夾

這個php中的圖片處理類完全足夠了,使用圖片水印

$groundImg = “DSC05940.jpeg”;

$groundInfo = getimagesize($groundImg);

$ground_w = $groundInfo[0];

//print_r($groundInfo);

$ground_h = $groundInfo[1];

switch($groundInfo[2]){

case 1:

$ground_im = imagecreatefromgif($groundImg);

break;

case 2:

$ground_im = imagecreatefromjpeg($groundImg);

break;

case 3:

$ground_im = imagecreatefrompng($groundImg);

break;

}

$waterImg = “DSC05949.jpeg”;

$imgInfo =getimagesize($waterImg);

$water_w = $imgInfo[0];

$water_w = $imgInfo[1];

switch($imgInfo[2]){

case 1:

$water_im = imagecreatefromgif($waterImg);

break;

case 2:

$water_im = imagecreatefromjpeg($waterImg);

break;

case 3:

$water_im = imagecreatefrompng($waterImg);

break;

}

imagecopy($ground_im,$water_im,100,100,0,0,500,500);

header(“Content-type: image/jpeg”);

imagejpeg($ground_im);

這些都很麻煩,建議使用框架,很多框架都提供了圖片處理類供使用

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/187097.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-27 13:35
下一篇 2024-11-27 13:35

相關推薦

  • Zlios——一個多功能的開發框架

    你是否在開發過程中常常遇到同樣的問題,需要不斷去尋找解決方案?你是否想要一個多功能、易於使用的開發框架來解決這些問題?那麼,Zlios就是你需要的框架。 一、簡介 Zlios是一個…

    編程 2025-04-29
  • 從不同位置觀察同一個物體,看到的圖形一定不同

    無論是在平時的生活中,還是在科學研究中,都會涉及到觀察物體的問題。而我們不僅要觀察物體本身,還需要考慮觀察的位置對觀察結果的影響。從不同位置觀察同一個物體,看到的圖形一定不同。接下…

    編程 2025-04-28
  • 使用boofcv進行圖像處理和機器視覺

    本文將詳細介紹使用boofcv進行圖像處理和機器視覺的方法和實踐。首先,我們將介紹boofcv的概述和安裝方法,然後分別介紹它的圖像處理、相機校準和機器學習功能。 一、概述和安裝 …

    編程 2025-04-28
  • Python設置圖形填充顏色為綠色的語句

    圖形設計是計算機科學中一個重要的分支,而Python語言也是最受歡迎的圖形設計語言之一。Python憑藉其易用性和開源特性,贏得了很多開發者和程序員的青睞。本文將圍繞如何設置Pyt…

    編程 2025-04-27
  • Python圖片處理

    Python是一種高級編程語言,具有快速開發應用程序的能力。Python有大量的庫和工具可以處理不同類型的圖像。Python在圖像識別、處理和分析方面是一種非常有用的語言。 一、讀…

    編程 2025-04-27
  • Python中的delattr:一個多功能的屬性刪除方法

    在Python編程中,delattr()是一個十分強大常用的函數,可以方便的刪除一個對象的屬性,並且使用起來非常靈活。接下來將從多個方面詳細闡述Python中的delattr()方…

    編程 2025-04-27
  • 故障樹中未探明事件的圖形符號

    故障樹是一種可視化的分析工具,用於確定系統或過程中故障的原因和可能的根源。故障樹中未探明事件的圖形符號是指在分析中無法找到前驅事件的事件,本文將從多個方面對其進行詳細闡述。 一、符…

    編程 2025-04-27
  • Matlab局部放大——圖像處理的神器

    一、什麼是Matlab局部放大? Matlab是一個高級技術計算語言和互動式環境,常被用來進行科學計算和工程設計等領域的計算和可視化操作。局部放大指對一張圖像或視頻中感興趣的區域進…

    編程 2025-04-25
  • kfloatwin.dll——多功能窗口驅動程序

    一、介紹 kfloatwin.dll是一個輕量級多功能窗口驅動程序,具有窗口置頂、窗口拖動、窗口透明等功能。本文將從功能、使用、實現等多個方面進行詳細闡述。 二、功能 1、窗口置頂…

    編程 2025-04-24
  • log4cpp:多功能的C++日誌庫

    一、簡介 log4cpp是一個支持多線程的C++日誌庫,能夠讓程序員在應用程序中方便地記錄日誌輸出,分級管理日誌信息,並靈活地控制日誌記錄方式。 log4cpp的設計目標是提供一種…

    編程 2025-04-24

發表回復

登錄後才能評論