ホームページ > バックエンド開発 > PHPチュートリアル > PHP 0 からの単一行 (18) 画像処理

PHP 0 からの単一行 (18) 画像処理

WBOY
リリース: 2016-06-13 11:56:21
オリジナル
719 人が閲覧しました

ゼロから始めるPHP一行 (18) 画像処理

1. 既存の画像を開く

<?phpheader("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";?>
ログイン後にコピー

さらに、画像のサイズは関数 getimagesize() を通じて取得できます。 GD ライブラリおよびその他の関連属性に属さない場合、この関数の構文は次のとおりです:

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

<?php$img_info=getimagesize("cc.jpg");for($i=0;$i<4;++$i){	echo $img_info[$i];	echo "<br/>";		}?>
ログイン後にコピー
3 番目の要素は画像形式であり、その値の意味は次のとおりです。

1: 画像が GIF 形式であることを示します

2:画像は JPG 形式であることを示します

3: 画像が PNG 形式であることを示します

4: 画像が SWF 形式であることを示します

5: 画像が SWF 形式であることを示します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);?>
ログイン後にコピー
最初のパラメータと 2 番目のパラメータは、それぞれターゲット画像と元の画像の識別子です。ターゲット画像とオリジナル画像のコピー位置 最後の 4 つのパラメータは、ターゲット画像とオリジナル画像のコピー領域の幅と高さです。
! ! imagecopyresampled() 関数を使用する >
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート