ホームページ  >  記事  >  バックエンド開発  >  ファイルをアップロードし、テキストと画像の透かしを追加するための PHP コード

ファイルをアップロードし、テキストと画像の透かしを追加するための PHP コード

WBOY
WBOYオリジナル
2016-07-25 09:10:221155ブラウズ
  1. /****************************************

  2. パラメータの説明:
  3. $max_file_size: アップロードするファイルのサイズ制限、単位 BYTE
  4. $destination_folder: アップロード ファイル パス
  5. $watermark: ウォーターマークを付けるかどうか (1 はウォーターマークを追加することを意味し、その他はウォーターマークを追加しないことを意味します);

  6. 使用手順:

  7. 1. GD ライブラリを使用する必要があるため、「extension=php_gd2.dll」行の前の ; 記号を削除します。
  8. 2. extension_dir = を php_gd2.dll が存在するディレクトリに変更します。
  9. ******* ***** ********/

  10. //アップロードファイルタイプリスト

  11. $uptypes=array(
  12. 'image/jpg ',
  13. 'image/jpeg',
  14. 'image/png',
  15. 'image/pjpeg',
  16. 'image/gif',
  17. 'image/bmp',
  18. 'image/x-png'
  19. );< /p>
  20. $max_file_size=2000000; //アップロードファイルサイズ制限、単位 BYTE

  21. $destination_folder="uploadimg/" //アップロードファイルパス
  22. $watermark=1;ウォーターマーク (1 はウォーターマークあり、その他はウォーターマークなし);
  23. $watertype=1; // ウォーターマークのタイプ (1 はテキスト、2 は画像)
  24. $waterposition=1; // ウォーターマークの位置 (1 は左下隅、 2 は右下隅、3 は左上隅、4 は右上隅、5 は中央);
  25. $waterstring="JYS Studio" //ウォーターマーク文字列
  26. $waterimg="xplore.gif";/ /ウォーターマーク画像
  27. $imgpreview= 1; //プレビュー画像を生成するかどうか(1は生成することを意味し、その他は生成しない);
  28. $imgpreviewsize=1/2; //サムネイル比率
  29. ?>
  30. ファイルをアップロード:

  31. アップロードできるファイル タイプは次のとおりです:
  32. < ;/form>
  33. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  34. {
  35. //ファイルは存在しますか?
  36. if ( !is_uploaded_file($_FILES["upfile"][tmp_name]) )
  37. {
  38. echo "画像が存在しません!";
  39. exit;
  40. }
  41. $file = $_FILES["upfile"];
  42. //チェックファイル サイズ

  43. if($max_file_size < ; $file["size"])

  44. {
  45. echo "ファイルが大きすぎます! 2M を超えることはできません! ";
  46. exit;
  47. }

  48. // ファイルの種類を確認します

  49. if(!in_array($file["type"], $uptypes))
  50. {
  51. echo "ファイルの種類は次のとおりです一致しません!" .$file["type"];
  52. exit;
  53. }

  54. //アップロードしたフォルダーが存在しない場合は、自動的に作成されます

  55. if(!file_exists($ destination_folder))
  56. {
  57. mkdir ($destination_folder);
  58. }

  59. $filename=$file["tmp_name"] // システムによって自動的に生成される一時ファイル名

  60. $filenamecustom = $file["name"]; //ユーザーがアップロードしたファイル名
  61. $image_size = getimagesize($filename) //画像サイズ
  62. $pinfo=pathinfo($file["name"]);アップロードされたファイルの情報
  63. $ftype=$pinfo[' extension'] //アップロードされたファイルの拡張子
  64. //$destination = $destination_folder.time().".".$ftype;//ディレクトリ +アップロードされたファイルのファイル名 + ファイルタイプ、ファイル名は time() によって決定されます。 Generate
  65. $destination = $destination_folder.$filenamecustom.".".$ftype;//アップロードされたファイルのディレクトリ + ユーザーファイル名 + ファイルtype

  66. //同名のファイルが存在するか確認

  67. if (file_exists($destination) && $overwrite != true)
  68. {
  69. echo "同名のファイルは既に存在します" ;
  70. exit;
  71. }

  72. // 指定したディレクトリにファイルを移動します

  73. if( !move_uploaded_file ($filename, $destination))
  74. {
  75. echo "ファイルの移動エラー";
  76. exit ;
  77. }

  78. $pinfo=pathinfo($destination); //ファイルのパス情報

  79. $fname=$pinfo[basename] //アップロードされたファイル名サーバーへ
  80. // echo " は正常にアップロードされました!
    ファイル名: ".$destination_folder.$fname."
    ";

  81. / / echo " アップロードに成功しました!
    ファイル名: ".$destination."
    ";

  82. echo " アップロードされました。
    ファイル名: ".$destination_folder.$filenamecustom."
    ";
  83. echo " 幅:".$image_size[0 ];
  84. echo " length: ".$image_size[1];
  85. echo "
    size: ".$file["size"]." bytes";
  86. if($watermark==1)
  87. {
  88. $iinfo=getimagesize($destination,$iinfo); //画像のサイズと種類を取得します
  89. $nimage=imagecreatetruecolor($image_size[0],$image_size[1]); //True Color 画像を作成して返します。識別子 Symbol,
  90. //サイズ x_size と y_size の黒の画像を表します
  91. $white=imagecolorallocate($nimage,255,255,255) //nimage は色を割り当てます
  92. $black=imagecolorallocate($nimage,0,0,0); $red=imagecolorallocate($nimage,255,0,0);
  93. imagefill($nimage,0,0,$white); //nimage 画像の座標 x、y (画像の左上隅は 0) , 0) カラー color を使用して領域の塗りつぶしを実行します
  94. // (つまり、x、y 点と同じ色の点および隣接する点が塗りつぶされます)
  95. /*
  96. 1 = GIF、2 = JPG、3 = PNG 、4 = SWF、5. = PSD、6 = BMP、7 = TIFF (インテル バイト オーダー)、8 = TIFF (モトローラ バイト オーダー)、
  97. 9 = JPC、10 = JP2、11 = JPX、12 = JB2、13 = SWC、14 = IFF、15 = WBMP、16 = XBM
  98. */
  99. switch ($iinfo[2])
  100. {
  101. case 1:
  102. $simage =imagecreatefromgif($destination); // 指定された画像から取得した画像ファイル名
  103. ブレーク;
  104. ケース 2:
  105. $simage =imagecreatefromjpeg($destination);
  106. ブレーク;
  107. ケース 3:
  108. $simage =imagecreatefrompng($destination);
  109. ブレーク;
  110. ケース 6:
  111. $simage =imagecreatefromwbmp($ destination);
  112. Break;
  113. default:
  114. die("サポートされていないファイル タイプ"); // exit() と同等
  115. }
  116. imagecopy($nimage,$simage,0,0,0,0,$image_size [0], $image_size[1]);//simage を 0,0 からコピー, $image_size[0] width, $image_size[1] height
  117. //simage の一部を座標 0,0 の位置にコピーin nimage
  118. imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);// の左上隅の座標を 1 として描画します白色の nimage image , $image_size[1]-15

  119. //右下隅の座標が 80 の長方形, $image_size[1]
  120. switch($watertype)
  121. {
  122. case 1: //ウォーターマーク文字列を追加
  123. imagestring($ nimage,2, 3,$image_size[1]-15,$waterstring,$black);//ウォーターストリングを黒で nimage の 3,$image_size[1]-15 座標に描画します。フォントはビルドされたものです。フォント 2 で
  124. Break;
  125. case 2 : //ウォーターマーク画像を追加します
  126. $simage1 =imagecreatefromgif("xplore.gif");
  127. imagecopy($nimage,$simage1,0,0,0,0,85,15);
  128. imagedestroy($simage1); // simagel に関連付けられたメモリを解放します
  129. Break;
  130. }
  131. switch ($iinfo[2])
  132. {
  133. case 1:
  134. //imagegif($nimage, $destination);
  135. imagejpeg( $nimage, $destination); // nimage イメージから、destination をファイル名として持つ JPEG 画像を作成します。 nimage パラメータは、imagecreatetruecolor() 関数の戻り値です。
  136. break;

  137. ケース2:

  138. imagejpeg($nimage, $destination);
  139. break;

  140. ケース3:

  141. imagepng($nimage, $destination) ) );
  142. Break;

  143. case 6:

  144. imagewbmp($nimage, $destination);
  145. //imagejpeg($nimage, $destination);
  146. Break;
  147. }
  148. //リリースメモリ
  149. imagedestroy($nimage);
  150. imagedestroy($simage);
  151. }
  152. if($imgpreview==1)
  153. {
  154. echo "
    画像プレビュー:
    ";
  155. echo "画像プレビュー: r ファイル名: ";
  156. }
  157. }
  158. ?>
  159. コードをコピー



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