PHP は、ウォーターマーク & プロポーショナルサムネイル & 固定高 & 固定幅クラスを追加します。 foreachループ処理を使用する場合、スリープ時間を設定するか、処理後の戻り値に従う必要があり、そうしないと処理が完了しません。
ダウンロード: http://pan.baidu.com/s/1ntKAfFF
- //ファイル名: image_process.class.php
- class Image_process{
- public $source;//元画像
- public $source_width;//幅
- public $source_height;//高さ
- public $source_type_id;
- public $orign_name;
- public $orign_dirname;
- //画像パスを渡します
- public function __construct($source){
- $this->typeList = array(1=>'gif',2= > ;'jpg',3=>'png');
- $ginfo = getimagesize($source);
- $this->source_width = $ginfo[0];
- $this->source_height = $ginfo[ 1 ];
- $this->source_type_id= $ginfo[2];
- $this->orign_url = $source;
- $this->orign_name = Basename($source);
- $this->orign_dirname = dirname ($source);
- }
-
- //判定して処理し、PHPが認識できるエンコーディングを返す
- public function judgeType($type,$source){
- if($type==1){
- return ImageCreateFromGIF($source) ; //gif
- }else if($type==2){
- return ImageCreateFromJPEG($source);//jpg
- }else if($type==3){
- return ImageCreateFromPNG($source);//png
- }else{
- return false;
- }
- }
-
- //ウォーターマーク画像を生成
- public function WatermarkImage($logo){
- $linfo = getimagesize($logo);
- $logo_width = $linfo[0];
- $ logo_height = $linfo[1];
- $logo_type_id = $linfo[2];
- $sourceHandle = $this->judgeType($this->source_type_id,$this->orign_url);
- $logoHandle = $this - >judgeType($logo_type_id,$logo);
-
- if( !$sourceHandle || ! $logoHandle ){
- return false;
- }
- $x = $this->source_width - $logo_width;
- $y = $ this->source_height- $logo_height;
-
- ImageCopy($sourceHandle,$logoHandle,$x,$y,0,0,$logo_width,$logo_width) または die("結合に失敗しました");
- $newPic = $ this->orign_dirname .'water_'.time().'.'.$this->typeList[$this->source_type_id];
-
- if( $this->saveImage($sourceHandle,$newPic) ) ){
- imagedestroy($sourceHandle);
- imagedestroy($logoHandle);
- }
- }
-
- // 幅を固定
- // 高さ = true 上部の高さを固定
- // 幅 = true 上部の幅を固定
- public function fixSizeImage( $ width,$height){
- if( $width > $this->source_width) $this->source_width;
- if( $height > $this->source_height ) $this->source_height;
- if ( $width === false){
- $width = Floor($this->source_width / ($this->source_height / $height));
- }
- if( $height === false){
- $ height = Floor($this->source_height / ($this->source_width / $width));
- }
- $this->tinyImage($width,$height);
- }
-
- //プロポーショナルスケーリング
- // $scale スケーリング
- public functionscaleImage($scale){
- $width = Floor($this->source_width * $scale);
- $height = Floor($this->source_height * $scale);
- $this->tinyImage($width,$height);
- }
-
- //サムネイルを作成する
- プライベート関数 tinyImage($width,$height){
- $tinyImage = imagecreatetruecolor($width, $height );
- $ handle = $this->judgeType($this->source_type_id,$this->orign_url);
- if(function_exists('imagecopyresampled')){
- imagecopyresampled($tinyImage,$handle,0,0,0 , 0,$width,$height,$this->source_width,$this->source_height);
- }else{
- imagecopyresize($tinyImage,$handle,0,0,0,0,$width,$height , $this->source_width,$this->source_height);
- }
-
- $newPic = time().'_'.$width.'_'.$height.'.' $this-> [$this->source_type_id];
- $newPic = $this->orign_dirname .'thumb_'. $newPic;
- if( $this->saveImage($tinyImage,$newPic)){
- imagedestroy($ tinyImage) );
- imagedestroy($handle);
- }
- }
-
- //画像を保存
- プライベート関数saveImage($image,$url){
- if(ImageJpeg($image,$url)){
- return true;
- }
- }
- }
コードをコピー
- //使用
-
-
- include('image_process.class.php');
- $m = array(
- 'D:myspacetestimage_process1.jpg',
- 'D:myspacetestimage_process2.jpg',
- 'D:myspacetestimage_process3.jpg',
- 'D:myspacetestimage_process4.jpg'
- );
-
- $img = 'D:myspacetestimage_process1.jpg';
- $logo = 'D:myspacetestimage_processlogo.png';
- foreach( $m as $item){
- $s = new Image_process( $item );
- $s->watermarkImage($logo);
- $s->scaleImage(0.8);
- $s->fixSizeImage(200,false) ;
- 睡眠(1);
- }
复制發
|