Heim > php教程 > php手册 > PHP从零单排(十八)图片处理

PHP从零单排(十八)图片处理

WBOY
Freigeben: 2016-06-13 09:35:35
Original
1310 Leute haben es durchsucht

1.打开已经存在的图片

<?php
header("Content-type:image/jpeg"); 
$img=imagecreatefromjpeg("cc.jpg");
imagejpeg($img);
imagedestroy($img);
?>
Nach dem Login kopieren
函数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";
?>
Nach dem Login kopieren

另外,通过一个不属于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/>";	
	}
?>
Nach dem Login kopieren
第三个元素是图片的格式,它的取值含义如下所示:

1:表示该图片是GIF格式

2:表示该图片是JPG格式

3:表示该图片是PNG格式

4:表示该图片是SWF格式

5:表示该图片是PSD格式

6:表示该图片是BMP格式

<?php
$pic_name="ee.png";
$pic_size=getimagesize($pic_name);
?>
"<?php echo $pic_size[3]; ?>>
Nach dem Login kopieren

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 "";	
	}
else
{
	echo "uploadWrong!<br/>";
	}
}
?>
<html>
<head>
<title>
19.9.php
</title>
</head>
<body>

</body>
</html>
Nach dem Login kopieren

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);
?>
Nach dem Login kopieren
第一个和第二个参数分别是目标图像、原图像的标识符,接下来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);
?>
Nach dem Login kopieren




Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage