php采集从零,PHP从零单排(十八)图像处理

1.打开现有的图像

header("Content-type:image/jpeg");

$img=imagecreatefromjpeg("cc.jpg");

imagejpeg($img);

imagedestroy($img);

?

>

函数imagecreatefromjpeg()的參数即文件所在路径。返回值是參数所指图片的资源标识符。

该函数时通过已有图像新建一个图像,并非单纯打开原图像本身。假设将图片的后缀名.jpg强制改为.png,即便是使用函数imagecreatefrompng()。也无法打开文件。由于图片本质还是jpg格式的图片。

2.获取图片的相关属性

$img=imagecreatefromjpeg("cc.jpg");

$x=imagesx($img);

$y=imagesy($img);

echo "图片cc.jpg的宽为:$x pixels";

echo "
";

echo "
";

echo "图片cc.jpg的高为:$y pixels";

?

>

另外,通过一个不属于GD库的函数getimagesize(),能够取得图片的大小等相关属性,该函数的语法例如以下:

array getimagesize(string $filename [, array &imageinfo])

$img_info=getimagesize("cc.jpg");

for($i=0;$i<4;++$i)

{

echo $img_info[$i];

echo "
";

}

?>

第三个元素是图片的格式,它的取值含义例如以下所看到的:

1:表示该图片是GIF格式

2:表示该图片是JPG格式

3:表示该图片是PNG格式

4:表示该图片是SWF格式

5:表示该图片是PSD格式

6:表示该图片是BMP格式

$pic_name="ee.png";

$pic_size=getimagesize($pic_name);

?

>

p><p>>

php echo $pic_size[3]; ?>>

3.对图片加水印效果

·获取要加入水印的图片的宽、高值

·确定图片大小是否满足水印文字大小

·确定水印效果在图片中的位置

·设定图像的混色模式

·生成水印效果

·释放资源

php

function makeimagewatermark($image,$pos,$water_text,$font_size,$color)

{

$font_type="c://WINDOWS//Fonts//SIMYOU.TTF";

if(!empty($image)&& file_exists($image))

{

$img_info=getimagesize($image);

$g_w=$img_info[0];

$g_h=$img_info[1];

switch($img_info[2])

{

case 1:

$img=imagecreatefromgif($image);

break;

case 2:

$img=imagecreatefromjpeg($image);

break;

case 3:

$img=imagecreatefrompng($image);

break;

default:

die("Format Wrong");

}

}

else

{

die("Not exists!");

}

$temp=imagettfbbox(ceil($font_size*2.5),0,$font_type,$water_text);

$w=$temp[2]-$temp[6];

$h=$temp[3]-$temp[7];

if(($g_w

{

echo "Too small!";

return;

}

switch($pos)

{

case 0:

$pos_x=rand(0,($g_w-$w));

$pos_y=rand(0,($g_h-$h));

break;

case 1:

$pos_x=0;

$pos_y=0;

break;

case 2:

$pos_x=($g_w-$w)/2;

$pos_y=($g_h-$h)/2;

break;

case 3:

$pos_x=$g_w-$w;

$pos_y=$g_h-$h;

break;

default:

$pos_x=rand(0,($g_w-$w));

$pos_y=rand(0,($g_h-$h));

break;

}

imagealphablending($img,true);//设置图像混色模式

if(!empty($color) && (strlen($color)==7))

{

$R=hexdec(substr($color,1,2));

$G=hexdec(substr($color,3,2));

$B=hexdec(substr($color,5));

}

else

{

die("Format wrong!");

}

$text_color=imagecolorallocate($img,$R,$G,$B);

imagettftext($img,$font_size,0,$pos_x,$pos_y,$text_color,$font_type,$water_text);

switch($img_info[2])

{

case 1 :

imagegif($img,$image);

break;

case 2 :

imagejpeg($img,$image);

break;

case 3:

imagepng($img,$image);

break;

default:

die("Formate unSupport!");

}

imagedestroy($img);

}

if(isset($_FILES) && !empty($_FILES['userfile'])&& $_FILES['userfile']['size']>0)

{$uploadfile="./".time()."_".$_FILES['userfile']['name'];

if(copy($_FILES['userfile']['tmp_name'],$uploadfile))

{

makeimagewatermark($uploadfile,2,"Photo by Mac",16,"#43042A");

echo "%5C%22%22.%24uploadfile.%22%5C%22";

}

else

{

echo "uploadWrong!
";

}

}

?>

19.9.php

选择上传图片:

4.生成已有图片的缩略图

php

header("Content-type:image/jpeg");

$img_name="cc.jpg";

$src_img=imagecreatefromjpeg($img_name);

$ow=imagesx($src_img);

$oh=imagesy($src_img);

$nw=round($ow*200.0/$ow);

$nh=round($oh*200.0/$oh);

$desc_img=imagecreate($nw,$nh);

imagecopyresized($desc_img,$src_img,0,0,0,0,$nw,$nh,$ow,$oh);

imagejpeg($desc_img);

imagedestroy($desc_img);

imagedestroy($src_img);

?>

第一个和第二个參数各自是目标图像、原图像的标识符,接下来4个參数是目的图像和原图像的复制位置的坐标,最后4个參数是目的图像和原图像的复制区域的宽高。

!使用函数imagecopyresampled()函数

header("Content-type:image/jpeg");

$img_name="cc.jpg";

$percent=0.2;

$src_img=imagecreatefromjpeg($img_name);

$ow=imagesx($src_img);

$oh=imagesy($src_img);

$nw=$ow*$percent;

$nh=$oh*$percent;

$desc_img=imagecreatetruecolor($nw,$nh);

imagecopyresampled($desc_img,$src_img,0,0,0,0,$nw,$nh,$ow,$oh);

imagejpeg($desc_img);

imagedestroy($desc_img);

imagedestroy($src_img);

?>

版权声明:本文博客原创文章。博客,未经同意,不得转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值