ホームページ >バックエンド開発 >PHPチュートリアル >PHP サムネイルとカットアウトの使用

PHP サムネイルとカットアウトの使用

WBOY
WBOYオリジナル
2016-06-13 12:32:23886ブラウズ

PHP サムネイルとカットアウトの使用
API:
resource imagecreatetruecolor ( int $width , int $height )
magecreatetruecolor() サイズ x_size および y_size の黒画像を表す画像識別子を返します。

この関数が定義されているかどうかは、PHP および GD のバージョンによって異なります。 PHP 4.0.6 から 4.1.x まで、この関数は GD モジュールがロードされている限り常に存在します。ただし、GD2 がインストールされていないときに呼び出されると、PHP は致命的なエラーを発行して終了します。 PHP 4.2.x では、この動作はエラーではなく警告を発行するように変更されました。他のバージョンでは、正しい GD バージョンがインストールされている場合にのみこの関数が定義されます。

bool imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )
src_x, src_y から始まる幅 src_w、高さ src_h の src_im イメージの一部を、座標が dst_x と dst_y である dst_im イメージの位置にコピーします。

bool imagejpeg ( resource $image [, string $filename [, int $quality ]] )
imagejpeg() ファイル名をファイルとしてイメージ image から JPEG 画像を作成します名前。

ool imagedestroy ( resource $image )
imagedestroy() 画像に関連付けられたメモリを解放します。 image は、imagecreatetruecolor() などのイメージ作成関数によって返されるイメージ識別子です。



http://www.cnblogs.com/xiaomia/archive/2010/11/13/1876191.html
最初は、imagecopyresize メソッドを使用して、実際の操作後、画像が縮小された後、ドライスポットが非常に深刻であることがわかりました。次に、imagecopysampled メソッドに切り替えます。これにより、画像がリサンプリングされ、縮小された画像が滑らかになり、鮮明さが大幅に向上します

list($src_w,$src_h)=getimagesize($src_img);  // 获取原图尺寸

$dst_scale = $dst_h/$dst_w; //目标图像长宽比
$src_scale = $src_h/$src_w; // 原图长宽比

if($src_scale>=$dst_scale){  // 过高
$w = intval($src_w);
$h = intval($dst_scale*$w);

$x = 0;
$y = ($src_h - $h)/3;
}
else{ // 过宽
$h = intval($src_h);
$w = intval($h/$dst_scale);

$x = ($src_w - $w)/2;
$y = 0;
}

// 剪裁
$source=imagecreatefromjpeg($src_img);
$croped=imagecreatetruecolor($w, $h);
imagecopy($croped,$source,0,0,$x,$y,$src_w,$src_h);

// 缩放
$scale = $dst_w/$w;
$target = imagecreatetruecolor($dst_w, $dst_h);
$final_w = intval($w*$scale);
$final_h = intval($h*$scale);
imagecopyresampled($target,$croped,0,0,0,0,$final_w,$final_h,$w,$h);

// 保存
$timestamp = time();
imagejpeg($target, "$timestamp.jpg");
imagedestroy($target);


http://www.cnblogs .com/analyzer/articles/1267017。 html
まずサムネイルについて説明します。これはより頻繁に使用されます。コードは次のとおりです。
<?php    
 header("Content-type: image/png");    
 //原图    
 $filename='source.jpg';    
 //缩放比例 新图/原图    
 $percent = '0.5';    
 list($width,$height) = getimagesize($filename);    
 $newwidth = $width * $percent;    
 $newheight = $height * $percent;    
// Load    
$thumb = imagecreatetruecolor($newwidth, $newheight);    
$source = imagecreatefromjpeg($filename);    
// Resize    
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);    
// Output    
imagepng($thumb);    
?> 



カットアウトについて説明します。つまり、スケーリングの代わりにカットアウトします。元の画像から小さな画像を作成して、よりパーソナライズしたものにします。コードは次のとおりです:
<?php    
 $maxW=300;    
 $maxH=300;    
 //图片路径    
 $link= "big.jpg";    
 $img = imagecreatefromjpeg($link);    
 list($width, $height, $type, $attr) = getimagesize($link);    
 $widthnum=ceil($width/$maxW);    
 $heightnum=ceil($height/$maxH);    
$iOut = imagecreatetruecolor ($maxW,$maxH);    
//bool imagecopy ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h )    
//将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。    
   
//整图循环切割    
for ($i=0;$i < $heightnum;$i++) {    
 for ($j=0;$j < $widthnum;$j++) {    
 imagecopy($iOut,$img,0,0,($j*$maxW),($i*$maxH),$maxW,$maxH);//复制图片的一部分    
 imagejpeg($iOut,"images/".$i."_".$j.".jpg"); //输出成0_0.jpg,0_1.jpg这样的格式    
 }    
}    
   
//只剪切一个开始部位的小图.复制图片的一部分    
 imagecopy($iOut,$img,0,0,0,0,$maxW,$maxH);    
 imagejpeg($iOut,"images/sm.jpg");    
?>

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