{Y}{m}{n} を使用して現在の日付を変更できます
- set_dir(dirname(__FILE__).'/upload/','{y}/{m}'); // 保存パス, {y}{m}{d} オプションをサポート
- $up->set_thumb(100,80); // 単位はピクセルです
- $up->set_watermark(dirname(__FILE__). '/jblog /images/watermark.png',6,90); //ウォーターマーク設定
- $fs = $up->execute(); //実行開始
-
- //クラス状況をテストするためのビュー
- }
- ?>
- /////フォームを表示----------
-
- test
-
- //複数の画像アップロードをサポート
-
-
-
-
-
- */
- class Upload {
-
- var $dir ; //添付ファイルが保存される物理ディレクトリ
- var $time; // カスタマイズされたファイルのアップロード時間
- var $field // アップロードコントロール名
- // 最大サイズ許可されるファイル サイズ、単位は KB です
-
- var $thumb_width; //サムネイルの幅
- var $watermark_file; //ウォーターマーク画像のアドレス
- var $watermark_trans; ;//透かしの透明度
-
- //コンストラクター
- //$types: アップロードできるファイルタイプ、$maxsize: 許可されるサイズ、$field: アップロードコントロール名、$time: カスタムアップロード時間
- function Upload($types = ' jpg|png', $maxsize = 1024, $field = 'attach', $time = '') {
- $this->allow_types =explode('|',$types);
- $ this->maxsize = $maxsize * 1024;
- $this->field = $field;
- $this->time ? $time : time();
-
- // 特定の保存ディレクトリを設定して作成します
- // $basedir: ベース ディレクトリ、物理パスである必要があります
- //$filedir: カスタム サブディレクトリ、利用可能なパラメータ {y}、{m}、{d}
- function set_dir($basedir,$filedir = '') {
- $dir = $basedir;
- !is_dir($dir) && @mkdir($dir,0777);
- if (!empty($filedir)) {
- $filedir = str_replace(array('{ y}','{m}) ','{d}'),array(date('Y',$this->time),date('m',$this->time),date(' d',$this->time; time)),strto lower($filedir));//string_replace を使用して {y} {m} {d} タグを置き換えます
- $dirs =explode('/',$filedir );
- foreach ($dirs as $d); {
- !empty($d) && $dir .= $d.'/';
- !is_dir($dir) && @mkdir($dir,0777)
- $this->dir = $ dir;
- }
-
- //画像のサムネイル設定、サムネイルを生成しない場合は設定不要
- //$width: サムネイルの幅, $height: サムネイルの高さ
- function set_thumb ($width = 0, $height = 0) {
- $this->thumb_width = $width;
- $this->thumb_height = $height; }
-
- //画像のウォーターマーク設定、生成されない場合はウォーターマークを追加する必要はありません
- //$file:ウォーターマーク画像、$pos: ウォーターマークの位置、$trans: ウォーターマークの透明度
- function set_watermark ($file, $pos = 6, $trans = 80) {
- $this->watermark_file = $ file; = $pos;
- $this->watermark_trans = $trans;
-
- /*——————————————————————- ファイルのアップロードを実行し、処理後にアップロードの成功または失敗を含むファイル情報の配列を返します。
- ここで: name はファイル名です。アップロードが成功した場合は、サーバーにアップロードされたファイル名になります。dir は、サーバー上に添付ファイルを保存するための物理パスです。アップロードが失敗した場合、サイズは添付ファイルのサイズです。この値
- フラグの存在はステータス識別子であり、1 は成功を意味し、-1 はファイル タイプが許可されていないことを意味します。 -2 はファイル サイズが
- を超えていることを意味します ———————————————————————– */
- functionexecute() {
- $files = array(); //ファイル情報が正常にアップロードされました
- $field = $this->field;
- $keys = array_keys($_FILES[$field]['name' ]);
- foreach ($keys as $key) {
- if (!$_FILES [$field]['name'][$key]) 続行;
-
- $fileext = $this->fileext($_FILES[ $field]['name'][$key]); // ファイルを取得します。 extension
- $filename = date('Ymdhis',$this->time).mt_rand(10,99).'.'.$ fileext; // ファイル名を生成します
- $filedir = $this->dir; / /添付ファイルが保存される実際のディレクトリ
- $filesize = $_FILES[$field]['size'][$key] //ファイル サイズ
-
- //許可されないファイル タイプ
- if (!in_array($fileext,$ this->allow_types)) {
- $files[$key]['name'] = $_FILES[$field]['name'][$ key];
- $files[$key]['flag'] = -1;
- 継続
- }
-
- //ファイル サイズを超えました
- if ($filesize > $this->maxsize) {
- $files[ $key]['name'] = $_FILES[$field][ 'name'][$key];
- $files[$key]['name'] = $filesize;
- 続行
-
- ; [$key]['name'] = $filename;
- $files[$key]['dir'] = $filedir;
-
- //保存ファイルをアップロードして一時ファイルを削除します
- if (is_uploaded_file($_FILES[$field]['tmp_name'][$key])) {
- move_uploaded_file($_FILES [$field]['tmp_name'][$key],$filedir .$filename);
- @unlink($_FILES[$field]['tmp_name'][$key]);
- $files[$key][ 'flag'] = 1; //画像に透かしを追加しますここでのデモは jpg と png のみをサポートします (gif が生成されるとフレームが失われます)
- if (in_array($fileext,array('jpg ','png'))) {
- if ($ this->thumb_width) {
- if ($this->create_thumb($filedir.$filename,$filedir.'thumb_'.$filename)) {
- $ files[$key]['thumb'] = 'thumb_ '.$filename; //サムネイルファイル名
- }
- }
- $this->create_watermark($filedir.$filename)
- }
- }
- }
-
- return $files }
-
- // サムネイルを作成します。同じ拡張子のサムネイルを生成します
- //$src_file: ソース画像のパス, $thumb_file: サムネイルのパス
- function create_thumb ($src_file,$thumb_file) {
- $t_width = $this->thumb_width;
- $t_height = $this- >thumb_height;
-
- if (!file_exists($src_file)) return false;
-
- $src_info = getImageSize($src_file); / / ソース画像がサムネイル以下の場合、ソース画像をコピーしますサムネイルとして表示されるため、
- if ($src_info[0] if (! copy($src_file,$thumb_file)) {
- の操作が不要になります。 return false;
- }
- return true
- }
-
- //サムネイルのサイズを比例的に計算します
- if (($src_info[0]-$t_width) > ($src_info [1]-$t_height)) {
- $t_height = ($t_width / $src_info[0]) * $src_info[1];
- $t_width = ($t_height / $src_info[1]) * $src_info[0] }
-
- //ファイル拡張子を取得します
- $fileext = $this->fileext($src_file);
- case 'jpg' :
- $src_img = ImageCreateFromJPEG($src_file); case 'png' :
- $src_img = ImageCreateFromPNG($src_file);
- case 'gif' :
- $src_img = ImageCreateFromGIF($src_file); // トゥルーカラーのサムネイル画像を作成します
- $thumb_img = @ImageCreateTrueColor($t_width,$t_height);
-
- //ImageCopyResampled 関数でコピーされた画像の方が滑らかなので優先されます
- if (function_exists('imagecopyresampled')) {
- @ImageCopyResampled($thumb_img,$src_img, 0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);
- } else {
- @ImageCopyResize($thumb_img,$src_img,0,0,0,0,$ t_width,$t_height,$src_info[0],$src_info[1]);
- }
-
- //サムネイルを生成
- switch ($fileext) {
- case 'jpg' :
- ImageJPEG($thumb_img,$thumb_file); ;
- case 'gif' :
- ImageGIF($thumb_img,$thumb_file);
- ImagePNG($thumb_img,$thumb_file)
- }
-
- // 一時的な画像を破棄します
-
- return true //ファイルが存在しない場合は、 return
- if (!file_exists($this->watermark_file) || !file_exists($file)) return
- if (!function_exists('getImageSize')) return;
-
- //GD がサポートするファイル タイプを確認します
- $gd_allow_types = array();
- if (function_exists('ImageCreateFromGIF')) $gd_allow_types['image/gif'] = 'ImageCreateFromGIF'
- if (function_exists('ImageCreateFromPNG') ) $gd_allow_types['image/png'] = 'ImageCreateFromPNG';
- if (function_exists('ImageCreateFromJPEG')) $gd_allow_types['image/jpeg'] = 'ImageCreateFromJPEG' // ファイル情報を取得します
- $fileinfo = getImageSize($file) ;
- $wminfo = getImageSize($this->watermark_file);
-
- if ($fileinfo[0] < $wminfo[0] || $fileinfo[1] < $wminfo[1] ) return;
- if (array_key_exists($fileinfo['mime'],$gd_allow_types)) {
- if (array_key_exists($wminfo['mime'],$gd_allow_types)) {
- // ファイルから画像を作成
- $ temp = $gd_allow_types[ $fileinfo['mime']]($file);
- $temp_wm = $gd_allow_types[$wminfo['mime']]($this->watermark_file)
-
- //ウォーターマークの位置
- スイッチ($this-> ;watermark_pos) {
- case 1 : // 左上
- $dst_x = 0; $dst_y = 0;
- case 2 : // 中央上
- $dst_x = ($fileinfo[0] - $ wminfo[0]) /2; $dst_y = 0;
- ケース 3 : //右上
- $dst_x = $dst_y = 0;
- 左下
- ; dst_x = 0; $dst_y = $fileinfo[1];
- ケース 5: //下中央
- $dst_y = $fileinfo[1] ]; ブレーク;
- ケース 6: //右下
- $dst_y = $fileinfo[1]-$wminfo[1];ランダム
- $ dst_x = mt_rand(0,$fileinfo[0]-$wminfo[0]); $dst_y = mt_rand(0,$fileinfo[1]-$wminfo[1])
- }
-
- if (function_exists( 'ImageAlphaBlending' )) ImageAlphaBlending($temp_wm,True); //画像のカラーブレンドモードを設定します
- if (function_exists('ImageSaveAlpha')) ImageSaveAlpha($temp_wm,True); //完全なアルファチャンネル情報を保存します
-
- //画像の場合 ウォーターマークを追加します
- if (function_exists('imageCopyMerge')) {
- ImageCopyMerge($temp,$temp_wm,$dst_x,$dst_y,0,0,$wminfo[0],$wminfo[1], $this->watermark_trans );else {
- ImageCopyMerge($temp,$temp_wm,$dst_x,$dst_y,0,0,$wminfo[0],$wminfo[1])
- }
-
- //画像を保存
- switch ($fileinfo[' mime ']) {
- ケース 'image/jpeg' :
- @imageJPEG($temp,$file)
- ケース 'image/png' :
- ブレーク; case 'image/gif' :
- @imageGIF($temp,$file);
- }
- //ゼロタイム画像を破棄します
- @imageDestroy($temp)
- }
- }
- }
-
- //ファイル拡張子を取得します
- function fileext($filename) {
- return strto lower(substr(strrchr($filename,'.'),1,10));
- }
- }
- ?>
-
-
- コードをコピー
-
-
画像アップロード、PHP
| このトピックは、2015-11-18 08:23 に Xiaobei によって移動されました