您的位置:

多功能的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);

这些都很麻烦,建议使用框架,很多框架都提供了图片处理类供使用