本文目錄一覽:
- 1、我這有個已經實現了php上傳圖片的功能的類,但是現在還要給上傳的每張圖片加水印,請高手幫忙……
- 2、求PHP圖片處理類。
- 3、PHP圖像處理函數有哪些
- 4、PHP 圖片處理
- 5、php圖片處理類怎麼用
- 6、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