ホームページ > バックエンド開発 > PHPチュートリアル > PHP ウォーターマーク & プロポーショナルサムネイル & 固定高 & 固定幅クラスを追加

PHP ウォーターマーク & プロポーショナルサムネイル & 固定高 & 固定幅クラスを追加

WBOY
リリース: 2016-07-25 08:47:29
オリジナル
821 人が閲覧しました
PHP は、ウォーターマーク & プロポーショナルサムネイル & 固定高 & 固定幅クラスを追加します。
foreachループ処理を使用する場合、スリープ時間を設定するか、処理後の戻り値に従う必要があり、そうしないと処理が完了しません。

ダウンロード: http://pan.baidu.com/s/1ntKAfFF
  1. //ファイル名: image_process.class.php
  2. class Image_process{
  3. public $source;//元画像
  4. public $source_width;//幅
  5. public $source_height;//高さ
  6. public $source_type_id;
  7. public $orign_name;
  8. public $orign_dirname;
  9. //画像パスを渡します
  10. public function __construct($source){
  11. $this->typeList = array(1=>'gif',2= > ;'jpg',3=>'png');
  12. $ginfo = getimagesize($source);
  13. $this->source_width = $ginfo[0];
  14. $this->source_height = $ginfo[ 1 ];
  15. $this->source_type_id= $ginfo[2];
  16. $this->orign_url = $source;
  17. $this->orign_name = Basename($source);
  18. $this->orign_dirname = dirname ($source);
  19. }
  20. //判定して処理し、PHPが認識できるエンコーディングを返す
  21. public function judgeType($type,$source){
  22. if($type==1){
  23. return ImageCreateFromGIF($source) ; //gif
  24. }else if($type==2){
  25. return ImageCreateFromJPEG($source);//jpg
  26. }else if($type==3){
  27. return ImageCreateFromPNG($source);//png
  28. }else{
  29. return false;
  30. }
  31. }
  32. //ウォーターマーク画像を生成
  33. public function WatermarkImage($logo){
  34. $linfo = getimagesize($logo);
  35. $logo_width = $linfo[0];
  36. $ logo_height = $linfo[1];
  37. $logo_type_id = $linfo[2];
  38. $sourceHandle = $this->judgeType($this->source_type_id,$this->orign_url);
  39. $logoHandle = $this - >judgeType($logo_type_id,$logo);
  40. if( !$sourceHandle || ! $logoHandle ){
  41. return false;
  42. }
  43. $x = $this->source_width - $logo_width;
  44. $y = $ this->source_height- $logo_height;
  45. ImageCopy($sourceHandle,$logoHandle,$x,$y,0,0,$logo_width,$logo_width) または die("結合に失敗しました");
  46. $newPic = $ this->orign_dirname .'water_'.time().'.'.$this->typeList[$this->source_type_id];
  47. if( $this->saveImage($sourceHandle,$newPic) ) ){
  48. imagedestroy($sourceHandle);
  49. imagedestroy($logoHandle);
  50. }
  51. }
  52. // 幅を固定
  53. // 高さ = true 上部の高さを固定
  54. // 幅 = true 上部の幅を固定
  55. public function fixSizeImage( $ width,$height){
  56. if( $width > $this->source_width) $this->source_width;
  57. if( $height > $this->source_height ) $this->source_height;
  58. if ( $width === false){
  59. $width = Floor($this->source_width / ($this->source_height / $height));
  60. }
  61. if( $height === false){
  62. $ height = Floor($this->source_height / ($this->source_width / $width));
  63. }
  64. $this->tinyImage($width,$height);
  65. }
  66. //プロポーショナルスケーリング
  67. // $scale スケーリング
  68. public functionscaleImage($scale){
  69. $width = Floor($this->source_width * $scale);
  70. $height = Floor($this->source_height * $scale);
  71. $this->tinyImage($width,$height);
  72. }
  73. //サムネイルを作成する
  74. プライベート関数 tinyImage($width,$height){
  75. $tinyImage = imagecreatetruecolor($width, $height );
  76. $ handle = $this->judgeType($this->source_type_id,$this->orign_url);
  77. if(function_exists('imagecopyresampled')){
  78. imagecopyresampled($tinyImage,$handle,0,0,0 , 0,$width,$height,$this->source_width,$this->source_height);
  79. }else{
  80. imagecopyresize($tinyImage,$handle,0,0,0,0,$width,$height , $this->source_width,$this->source_height);
  81. }
  82. $newPic = time().'_'.$width.'_'.$height.'.' $this-> [$this->source_type_id];
  83. $newPic = $this->orign_dirname .'thumb_'. $newPic;
  84. if( $this->saveImage($tinyImage,$newPic)){
  85. imagedestroy($ tinyImage) );
  86. imagedestroy($handle);
  87. }
  88. }
  89. //画像を保存
  90. プライベート関数saveImage($image,$url){
  91. if(ImageJpeg($image,$url)){
  92. return true;
  93. }
  94. }
  95. }
コードをコピー
  1. //使用
  2. include('image_process.class.php');
  3. $m = array(
  4. 'D:myspacetestimage_process1.jpg',
  5. 'D:myspacetestimage_process2.jpg',
  6. 'D:myspacetestimage_process3.jpg',
  7. 'D:myspacetestimage_process4.jpg'
  8. );
  9. $img = 'D:myspacetestimage_process1.jpg';
  10. $logo = 'D:myspacetestimage_processlogo.png';
  11. foreach( $m as $item){
  12. $s = new Image_process( $item );
  13. $s->watermarkImage($logo);
  14. $s->scaleImage(0.8);
  15. $s->fixSizeImage(200,false) ;
  16. 睡眠(1);
  17. }
复制發


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート