/**- * サムネイルを生成するには画像をアップロードします
- *
- * GD2 ライブラリのサポートが必要です
- *
- * パラメータ new sumnails('サムネイル化される画像の元のアドレス'、'サムネイルの幅'、'サムネイルの高さ'は初期化中に必要です ' ,'(オプションのパラメータ) サムネイル保存パス');
- * 最後のパラメータが指定されていない場合、サムネイルはデフォルトで元画像のディレクトリ内の小さいフォルダに保存されます
- * 小さいフォルダが存在しない場合、小さなフォルダーが自動的に作成されます
- *
- * 初期化後、メソッド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']//比例サムネイルの高さ
- *
- */
- class sumnails{
- private $imgSrc; //画像の保存パス
- private $saveSrc; //画像の保存パス、デフォルトは空です
- 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->gt; CanvasHeight = $ CanvasHeight;
- $this->saveSrc = $saveSrc;
- }
-
- /**
- * サムネイルを生成します
- */
- public function generated()
- {
- $this->createCanvas();
- $this- >judgeImage ();
- $this->copyImage();
- $this->headerImage();
- }
-
- /**
- * ロードされた画像の情報を取得します
- *
- * 長さ、幅、画像タイプが含まれます
- *
- * @return array 画像の長さ、幅、MIME を含む配列
- */
- private function 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);
- ブレーク;
-
- case 'image/gif':$dm = imagecreatefromgif($this->imgSrc);
- ブレーク;
-
- case 'image/jpg':$dm = imagecreatefromjpeg ($this ->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);
- }
- }
复制番号
|