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