您的位置:首页 > 编程语言 > PHP开发

PHP从零单排(十八)图片处理 分类: PHP 2014-05-06 10:44 377人阅读 评论(0) 收藏

2014-05-06 10:44 706 查看
1.打开已经存在的图片

<?php
header("Content-type:image/jpeg");
$img=imagecreatefromjpeg("cc.jpg");
imagejpeg($img);
imagedestroy($img);
?>
函数imagecreatefromjpeg()的参数即文件所在路径,返回值是参数所指图片的资源标识符。该函数时通过已有图像新建一个图像,并不是单纯打开原图像本身。如果将图片的后缀名.jpg强制改为.png,即便是使用函数imagecreatefrompng(),也无法打开文件,因为图片本质还是jpg格式的图片。

2.获取图片的相关属性

<?php
$img=imagecreatefromjpeg("cc.jpg");
$x=imagesx($img);
$y=imagesy($img);
echo "图片cc.jpg的宽为:<b>$x</b> pixels";
echo "<br/>";
echo "<br/>";
echo "图片cc.jpg的高为:<b>$y</b> pixels";
?>


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

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

<?php
$img_info=getimagesize("cc.jpg");
for($i=0;$i<4;++$i)
{
echo $img_info[$i];
echo "<br/>";
}
?>
第三个元素是图片的格式,它的取值含义如下所示:

1:表示该图片是GIF格式

2:表示该图片是JPG格式

3:表示该图片是PNG格式

4:表示该图片是SWF格式

5:表示该图片是PSD格式

6:表示该图片是BMP格式

<?php
$pic_name="ee.png";
$pic_size=getimagesize($pic_name);
?>
<img src="<?php echo $pic_name; ?>"<?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<$w) || ($g_h<$h))
{
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 "<img src=\"".$uploadfile."\" border=\"0\">";
}
else
{
echo "uploadWrong!<br/>";
}
}
?>
<html>
<head>
<title>
19.9.php
</title>
</head>
<body>
<form enctype="multipart/form-data" method="POST">
选择上传图片:<input name="userfile" type="file">
<input type="submit" value="上传">
</form>
</body>
</html>


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()函数

<?php
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);
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐