ホームページ >バックエンド開発 >PHPチュートリアル >画像をアップロードしてサムネイルを生成する PHP 実装 example_PHP チュートリアル

画像をアップロードしてサムネイルを生成する PHP 実装 example_PHP チュートリアル

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

機能は非常にシンプルで、コード内にコメントがあり、コードを直接提供します

コードをコピーします コードは次のとおりです:

/**
* サムネイルを生成するには画像をアップロードします
*
* GD2 ライブラリのサポートが必要です
*
* 新しいサムネイルのパラメータ (「サムネイル化される画像の元のアドレス」、「サムネイルの幅」、「サムネイルの高さ」は初期化中に必要です ' ,'(オプションのパラメータ) サムネイル保存パス');
* 最後のパラメータが指定されていない場合、サムネイルはデフォルトで元画像のディレクトリ内の小さいフォルダに保存されます
* 小さいフォルダが存在しない場合、小さなフォルダーが自動的に作成されます
*
* 初期化後、サムネイルを作成するためにメソッドProduceを呼び出す必要があります
* $thumbnails = new summnails(''....);
* $thumbnails->Produce() ;
*
* 元の画像、幅、高さ、画像 mime の関連情報を取得できます
*
* $thumbnails->getImageWidth() //int 画像幅
* $thumbnails->getImageHeight( ); // int 画像の高さ
* $thumbnails->getImageMime(); // 画像の文字列 mime
*
* $thumbnails->trueSize(); // これは幅と合計を含む配列です。縮小後の画像の高さの配列
* $size = array('width'=>'','height'=>'');
* 画像の幅と高さを取得します。スケーリング後
* $size['width ']//比例サムネイルの幅
* $size['height']//比例サムネイルの高さ
*
*/
クラスサムネイル{

private $imgSrc; //画像の保存パス、デフォルトは空です
private $canvasWidth;キャンバスの幅
private $canvasHeight; //キャンバスの高さ
private $im; //画像をコピーすることで返されるリソース

/**
* クラスを初期化し、関連設定を読み込みます
*
* @param $imgSrc サムネイル化する必要がある画像のパス
* @param $canvasWidth サムネイルの幅
* @param $canvasHeight サムネイルの高さ
*/
public function __construct ($imgSrc,$canvasWidth,$canvasHeight,$saveSrc=null)
{
$this->imgSrc = $imgSrc;
$this->canvasWidth = $canvasWidth;
$this->canvasHeight = $canvasHeight;
$this->saveSrc = $saveSrc;
}

/**
* サムネイルを生成します
*/
public function generated()
{
$this->createCanvas();
$this-> judgeImage() ;
$this->copyImage();
$this->headerImage();
}

/**
* ロードされた画像に関する情報を取得します
*
* 長さ、幅、画像タイプが含まれます
*
* @return array 画像の長さ、幅、MIME を含む配列
*/
プライベート関数 getImageInfo()
{
return getimagesize($this) ->imgSrc);
}

/**
* 画像の長さを取得します
*
* @return int 画像の幅
*/
public function getImageWidth()
{
$imageInfo = $this->getImageInfo();
return $imageInfo['0'];
}

/**
* 画像の高さを取得します
*
* @return int 画像の高さ
*/
public function getImageHeight()
{
$imageInfo = $this->getImageInfo();
return $imageInfo['1'];
}

/**
* 画像の種類を取得します
*
* @return 画像の MIME 値を返します
* /
public function getImageMime()
{
$imageInfo = $this->getImageInfo();
return $imageInfo['mime'];
}

/**
* キャンバスを作成します
*
* 同時に、作成したキャンバスリソースを $this->im 属性に入れます
*/
private function createCanvas()
{
$size = $this->trueSize();
$this->im = imagecreatetruecolor($size['width'],$size['height']);
}

/ **
* 画像のMIME値を決定し、使用する機能を決定します
*
* 同時に、作成した画像リソースを$this->dmに入れます
*/
プライベート関数 judgeImage()
{
$mime = $this->getImageMime();
switch ($mime)
{
case 'image/png':$dm = imagecreatefrompng($ this-> ;imgSrc);
break;

case 'image/gif':$dm = imagecreatefromgif($this->imgSrc);
break;

case 'image/jpg':$dm = imagecreatefromjpeg($ this->gt;imgSrc);
break;

case 'image/jpeg':$dm = imagecreatefromgjpeg($this->imgSrc);
break;
}
$this->dm = $dm;
}

/**
* 縮小後の画像の幅と高さを決定します
*
* この幅と高さはキャンバスのサイズとしても使用されます
*
* @return 配列 均等に縮小した後の画像のサイズ
*/
public function trueSize()
{
$proportionW = $this->getImageWidth() / $this->canvasWidth;
$proportionH = $this->getImageHeight() / $this->canvasHeight;

if( ($this->getImageWidth() < $this->canvasWidth) && ($this->getImageHeight() < $this->canvasHeight) )
{
$trueSize = array('width'=>$this->getImageWidth(),'height'=>$this->getImageHeight());
}
elseif($proportionW >= $ propertyH)
{
$trueSize = array('width'=>$this->canvasWidth,'height'=>$this->getImageHeight() / $proportionW);
}
else
{
$ trueSize = array('width'=>$this->getImageWidth() / $proportionH,'height'=>$this->canvasHeight);
}
return $trueSize;
}

/**
* 画像を新しいキャンバスにコピーします
*
* 画像は比例的に拡大縮小され、変形されません
*/
プライベート関数 copyImage()
{
$size = $this->trueSize();
imagecopyresize($this->im, $this->dm , 0 , 0 , 0 , 0 、 $size['width'] 、 $size['height'] 、 $this->getImageWidth() 、 $this->getImageheight());
}

/**
* 画像をエクスポートします
*
* 画像の名前は、デフォルトでは元の画像名と同じになります
*
* パスは、大きい画像の現在のディレクトリの下にある小さいディレクトリです
*
* 小さい画像の場合ディレクトリが存在しないため、自動的に作成されます
*/
public function headerImage()
{
$position = strrpos($this->imgSrc,'/');
$imageName = substr($this->imgSrc,($position + 1));
if($this ->saveSrc)
{
$imageFlode = $this->saveSrc.'/';
}
else
{
$imageFlode = substr($this->imgSrc,0,$position).'/small /';
}
if(!file_exists($imageFlode))
{
mkdir($imageFlode);
}
$saveSrc = $imageFlode.$imageName;
imagejpeg($this->im,$saveSrc);
}
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/754037.html技術記事機能很简单,代码中有注释,直接大家上代了复制代码代码如下: ?php /** * 上传图片生成缩略图 * * GD2库的サポート * * 初期化時必要参...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。