ホームページ  >  記事  >  バックエンド開発  >  PHP は、ウォーターマーク & プロポーショナルサムネイル & 固定高 & 固定幅クラスを追加します。

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

WBOY
WBOYオリジナル
2016-07-25 08:42:52882ブラウズ
  1. //PHP ウォーターマーク、比例サムネイル、固定高さ、固定幅クラスを追加します。
  2. class Image_process{
  3. public $source; //元の画像の幅
  4. public $source_height; //元の画像の高さ
  5. public $orign_dirname; //元の画像パスを渡します
  6. public function __construct($source){
  7. $this->typeList = array(1=>'gif',2=>'jpg',3=>'png' ) ;
  8. $ginfo = getimagesize($source);
  9. $this->source_width = $ginfo[1];
  10. $this->source_type_id = $ginfo [ 2];
  11. $this->orign_url = $source;
  12. $this->orign_dirname = dirname($source);
  13. ;画像 ファイルの形式。PHP で認識されるエンコーディングを返します。
  14. public function judgeType($type,$source){
  15. if($type == 1){
  16. return imagecreatefromgif($source)
  17. }else; if($ type == 2){
  18. return imagecreatefromjpeg($source); //jpg
  19. }else if($type == 3){
  20. return imagecreatefrompng($source); //png
  21. }else{
  22. return false ;
  23. }
  24. }
  25. //ウォーターマーク画像を生成
  26. $linfo = getimagesize($logo)
  27. $logo_height = $linfo[1]; ;
  28. $ logo_type_id = $linfo[2];
  29. $sourceHandle = $this->judgeType($this->source_type_id,$this->orign_url);
  30. $logoHandle = $this->judgeType($logo_type_id) ,$logo );
  31. if(!$sourceHandle || !$logoHandle){
  32. return false }
  33. $x = ($this->source_width - $logo_width)/2; >source_height - $logo_height)/2;
  34. imagecopy($sourceHandle,$logoHandle,$x,$y,0,0,$logo_width,$logo_height);
  35. $newPic = $this->orign_dirname.'water_' .time( ).'.'.$this->typeList[$this->saveImage($sourceHandle,$newPic)){
  36. imagedestroy($sourceHandle); imagedestroy($ logoHandle);
  37. }
  38. }
  39. //固定高さ幅
  40. public function fixSizeImage($width,$height){
  41. if($width > $this->source_width) $this->source_width;
  42. if( $height > $this->source_height) $this->source_height;
  43. if($width === false){
  44. $width = Floor($this->source_width / ($this-> ;source_height / $height));
  45. }
  46. if($height === false){
  47. $height = Floor($this->source_height / ($this->source_width / $width)); $this- >tinyImage($width,$height);
  48. }
  49. //画像を拡大縮小する
  50. public functionscaleImage($scale){
  51. $width = Floor($this->source_width * $scale); $height = Floor($this->source_height * $scale);
  52. $this->tinyImage($width, $height)
  53. }
  54. // サムネイルを作成する
  55. public function tinyImage($width,$height); ){
  56. $tinyImage = imagecreatetruecolor($width,$height);
  57. $handle = $this->judgeType($this->source_type_id,$this->orign_url);
  58. if(function_exists('imagecopyresampled'); ){
  59. imagecopyresampled($tinyImage, $handle, 0, 0, 0, 0, $width, $height, $this->source_width, $this->source_height)
  60. }else{
  61. imagecopyresize($tinyImage, $handle , 0, 0, 0, 0, $width, $height, $this->source_width, $this->source_height);
  62. }
  63. $newPic = $this->orign_dirname.'thumb_'.time () .'_'.$width."_".$height.".".$this->typeList[$this->source_type_id]
  64. if($this->saveImage($tinyImage,$) newPic) ){
  65. imagedestroy($tinyImage);
  66. imagedestroy($handle)
  67. }
  68. }
  69. // 画像を保存
  70. private function saveImage($image,$url){
  71. if(imagejpeg($image,$url) )){
  72. return true;
  73. }
  74. }
  75. $imgHandle = new Image_process('D:AppServwwwtestgetimg14061907445601.jpg');
  76. //$imgHandle->waterMakeImage('D:AppServwwwtestgetimgshougongke.png');ウォーターマーク画像を生成
  77. //$imgHandle->fixSizeImage(200,150); //固定長画像
  78. $imgHandle->scaleImage(0.2); //等倍化
  79. ;
  80. PHP、アンプ


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