ホームページ >バックエンド開発 >PHPチュートリアル >ファイルアップロードに対応し互換性の高い画像サムネイルプログラム_PHPチュートリアル

ファイルアップロードに対応し互換性の高い画像サムネイルプログラム_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:45:47849ブラウズ

生成される略語コードは以下の3種類です。高さと幅をカスタマイズすることもできます。

関数 imageresize($srcfile,$tow,$toh,$tofile="")
{
if($tofile==""){ $tofile = $srcfile }
$info = ""; $data = getimagesize($srcfile,$info); スイッチ ($data[2])
{
ケース 1:
if(!function_exists("imagecreatefromgif")){
echo "GD ライブラリでは gif 形式の画像を使用できません。jpeg または png 形式を使用してください!Return"; 終了(); }
$im = imagecreatefromgif($srcfile); 休憩
ケース 2:
if(!function_exists("imagecreatefromjpeg")){
echo "GD ライブラリでは jpeg 形式の画像を使用できません。他の形式の画像を使用してください!Return"; 終了(); }
$im = imagecreatefromjpeg($srcfile); 休憩
ケース 3:
$im = imagecreatefrompng($srcfile); 休憩
}
$srcw=画像x($im); $srch=imagesy($im); $トウ=$トウ/$トウ
$srcwh=$srcw/$srch
if($towh $ftow=$tow
$ftoh=$ftow*($srch/$srcw); }
他{
$ftoh=$toh; $ftow=$ftoh*($srcw/$srch); }
if($srcw>$tow||$srch>$toh)
{
if(function_exists("imagecreatetruecolor")){
@$ni = imagecreatetruecolor($ftow,$ftoh); if($ni) imagecopyresampled($ni,$im,0,0,0,0,$ftow,$ftoh,$srcw,$srch); 他{
$ni=imagecreate($ftow,$ftoh); imagecopyresize($ni,$im,0,0,0,0,$ftow,$ftoh,$srcw,$srch); }
}その他{
$ni=imagecreate($ftow,$ftoh); imagecopyresize($ni,$im,0,0,0,0,$ftow,$ftoh,$srcw,$srch); }
if(function_exists('imagejpeg')) imagejpeg($ni,$tofile); else imagepng($ni,$tofile); 画像破壊($ni); }
画像破壊($im); }

コード例 2


/*コンストラクター - サムネイルとウォーターマークを生成、パラメーターの説明:
$srcfile-image ファイル名,
$dstfile-保存ファイル名,
$markwords-透かしテキスト,
$markimage-ウォーターマーク画像,
$dstw-画像保存幅,
$dsth-画像の保存高さ、
$rate-画像保存品質*/
makethumb("a.jpg","b.jpg","50","50");
関数 makethumb($srcfile,$dstfile,$dstw,$dsth,$rate=100,$markwords=null,$markimage=null)
{
$data = getimagesize($srcfile); スイッチ($data[2])
{
ケース 1:
$im=@imagecreatefromgif($srcfile); 休憩
ケース 2:
$im=@imagecreatefromjpeg($srcfile); 休憩
ケース 3:
$im=@imagecreatefrompng($srcfile); 休憩
}

if(!$im) は false を返します。 $srcw=画像x($im); $srch=imagesy($im); $dstx=0; $dsty=0; if ($srcw*$dsth>$srch*$dstw)

{
$fdsth = ラウンド($srch*$dstw/$srcw); $dsty = フロア(($dsth-$fdsth)/2); $fdstw = $dstw; }

それ以外は
{
$fdstw = ラウンド($srcw*$dsth/$srch); $dstx = フロア(($dstw-$fdstw)/2); $fdsth = $dsth
}
$ni=imagecreatetruecolor($dstw,$dsth); $dstx=($dstx<0)?0:$dstx; $dsty=($dstx<0)?0:$dsty
$dstx=($dstx>($dstw/2))?フロア($dstw/2):$dstx; $dsty=($dsty>($dsth/2))?フロア($dsth/s):$dsty; $white = imagecolorallocate($ni,255,255,255); $black = imagecolorallocate($ni,0,0,0); imagefilledrectangle($ni,0,0,$dstw,$dsth,$white);//背景色を塗りつぶす
imagecopyresize($ni,$im,$dstx,$dsty,0,0,$fdstw,$fdsth,$srcw,$srch); if($markwords!=null)
{
$markwords=iconv("gb2312","utf-8",$markwords); //テキストエンコーディングを変換します
imagettftext($ni,20,30,450,560,$black,"simhei.ttf",$markwords); //テキストの透かしを書き込みます
//パラメータは次の順序です: テキスト サイズ | 偏向度 | 横座標 | 垂直座標 | テキストの色 | テキストの種類 | テキストの内容
}
elseif($markimage!=null)
{
$wimage_data = getimagesize($markimage); スイッチ($wimage_data[2])
{
ケース 1:
$wimage=@imagecreatefromgif($markimage)
休憩
ケース 2:
$wimage=@imagecreatefromjpeg($markimage); 休憩
ケース 3:
$wimage=@imagecreatefrompng($markimage); 休憩
}
imagecopy($ni,$wimage,500,560,0,0,88,31); //画像のウォーターマークを書き込みます。デフォルトのウォーターマーク画像サイズは 88*31 です。 画像破壊($wimage)
}
imagejpeg($ni,$dstfile,$rate); imagejpeg($ni,$srcfile,$rate); 画像破壊($im); 画像破壊($ni); }
?>


画像アップロードコードをサポート



$pic_name=date("dmyhis");

// 画像の幅を生成します
$pic_width=$_post['width'];

// 画像の高さを生成します
$pic_height=$_post['長さ'];

関数 Resizeimage($im,$maxwidth,$maxheight,$name){
// 現在の画像サイズを取得します
$width = 画像x($im); $height = imagey($im); //サムネイルのサイズを生成します
if(($width > $maxwidth) || ($height > $maxheight)){
$widthratio = $maxwidth/$width
; $heightratio = $maxheight/$height
if($widthratio < $heightratio){
$ratio = $widthratio
}その他{
$ratio = $heightratio
}
$newwidth = $width * $ratio; $newheight = $height * $ratio;
If(function_exists("imagecopyresampled")){
$newim = imagecreatetruecolor($newwidth, $newheight); Imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height
); }その他{
$newim = imagecreate($newwidth, $newheight); Imagecopyresize($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height
); }
Imagejpeg ($newim,$name . ".jpg"); イメージデストロイ ($newim)
}その他{
Imagejpeg ($im,$name . ".jpg"); }
}

if($_files['image']['size']){
//エコー $_files['image']['type'];
if($_files['image']['type'] == "image/pjpeg"||$_files['image']['type'] == "image/jpg"||$_files['image' ]['タイプ'] == "画像/jpeg"){
$im = imagecreatefromjpeg($_files['image']['tmp_name']); }elseif($_files['image']['type'] == "image/x-png"){
$im = imagecreatefrompng($_files['image']['tmp_name']); }elseif($_files['image']['type'] == "画像/gif"){
$im = imagecreatefromgif($_files['image']['tmp_name']); }
if($im){

If(file_exists($pic_name.'.jpg')){

リンクを解除($pic_name.'.jpg'); }
サイズ変更($im,$pic_width,$pic_height,$pic_name); イメージデストロイ ($im)
}
}
?>




サムネイルの幅を生成:


サムネイルの長さを生成:








http://www.bkjia.com/PHPjc/632990.html

www.bkjia.com
本当


http://www.bkjia.com/PHPjc/632990.html

技術記事

生成される略語コードは以下の3種類があり、高さと幅をカスタマイズすることもできます。 function imageresize($srcfile,$tow,$toh,$tofile=) { if($tofile==){ $tofile =...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。