ホームページ  >  記事  >  バックエンド開発  >  サムネイルを生成できるPHPファイルアップロードクラスの例、_PHPチュートリアル

サムネイルを生成できるPHPファイルアップロードクラスの例、_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:11:32929ブラウズ

phpはサムネイルファイルアップロードクラスのサンプルを生成できます、

この記事の例では、PHP でサムネイルを生成できるファイル アップロード クラスとその使用法について説明します。参考のためにみんなで共有してください。具体的な実装方法は以下の通りです

クラスファイルの呼び出し方法は以下の通りです

コードをコピーします コードは次のとおりです:
if ($_GET['action'] == '保存') {
$up = 新しいアップロード(); $up = 新しいアップロード(); $up->set_dir(dirname(__FILE__).'/upload/','{y}/{m}'); $up->set_thumb(100,80); $up->set_thumb(100,80); $up->set_watermark(dirname(__FILE__).'/jblog/images/watermark.png',6,90); $fs = $up->execute(); $fs = $up->execute();
var_dump($fs); }
?>
テスト <フォーム名="アップロード" メソッド="ポスト" アクション="?アクション=保存" enctype="multipart/form-data" スタイル="マージン:0">                                                                                                                                                                                                                                                 &lt;入力型= "submit" name = "" submit "value =" upload " /&gt;

次のようにアップロード ファイルをアップロードします:




コードをコピーします

コードは次のとおりです:
クラスのアップロード{
var $dir; //添付ファイルが保存される物理ディレクトリ
var $time; // カスタマイズされたファイルのアップロード時間
var $allow_types; //添付ファイルの種類のアップロードを許可します
var $field // コントロール名をアップロードします
var $maxsize; // 許可される最大ファイル サイズ、単位は KB です

var $thumb_width; //サムネイルの幅
var $thumb_height; //サムネイルの高さ

var $watermark_file //ウォーターマーク画像アドレス
var $watermark_pos; //ウォーターマークの位置
var $watermark_trans;//ウォーターマークの透明度
//オープンソースコード phpfensi.com

//コンストラクター関数
//$types: アップロードが許可されるファイルの種類、$maxsize: 許可されるサイズ、$field: アップロード コントロール名、$time: カスタマイズされたアップロード時間
関数アップロード($types = 'jpg|png', $maxsize = 1024, $field = 'attach', $time = '') {
$this->allow_types =explode('|',$types);                                                                                   $this->field = $field;                                                                                                                                                      
// ファイルを保存する特定のディレクトリを設定および作成します //
//$basedir : ベース ディレクトリ、物理パスである必要があります //$basedir
//$filedir : カスタム サブディレクトリ、使用可能なパラメータ {y}、{m}、{d}
関数 set_dir($basedir,$filedir = '') {
$dir = $basedir; !is_dir($dir) && @mkdir($dir,0777);
if (!emptyempty($filedir)) {
$filedir = str_replace(array('{y}','{m}','{d}'),array(date('Y',$this->time),date('m',$this ->time),date('d',$this->time)),strto lower($filedir)); $dirs =explode('/',$filedir); foreach ($dir として $d) {
!emptyempty($d) && $dir .= $d.'/'; !is_dir($dir) && @mkdir($dir,0777);                                                                                                                                                                       $this->dir = $dir;                                                               
// 画像のサムネイル設定、サムネイルが生成されない場合は設定する必要はありません
//$width: サムネイルの幅、$height: サムネイルの高さ
関数 set_thumb ($width = 0, $height = 0) {
                                                                                                                                                                                                                                                                             
//画像のウォーターマーク設定、ウォーターマークが生成されない場合は設定する必要はありません
//$file: ウォーターマーク画像、$pos: ウォーターマークの位置、$trans: ウォーターマークの透明度
関数 set_watermark ($file, $pos = 6, $trans = 80) {
                                                                                                                                                                                                  $this->watermark_trans = $trans;                                                                
/*------------------------------------------------ ---------------- ファイルのアップロードを実行し、処理後にアップロードの成功または失敗を含むファイル情報の配列を返します。
ここで、 name はファイル名です。アップロードが成功した場合、それはサーバーにアップロードされたファイル名です。
dir は、添付ファイルがサーバー上に保存される物理パスです。アップロードが失敗した場合、この値は存在しません。 size は添付ファイルのサイズです。アップロードが失敗した場合、この値は存在しません
フラグはステータス インジケーターです。1 は成功を意味します。-1 はファイル タイプが許可されていないことを意味します。-2 はファイル サイズが超過していることを意味します
-------------------------------------------------- ---------------*/
関数実行() {
$ files = array(); $field = $this->field; $keys = array_keys($_FILES[$field]['name']);
foreach ($keys を $key) {
if (!$_FILES[$field]['name'][$key]) 続行;                                                                $fileext = $this->fileext($_FILES[$field]['name'][$key]); // ファイル拡張子を取得します_ $ filename = date( 'ymdhis'、$ this-&gt; 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;        
                $files[$key]['flag'] = -2;        
                続く;        
            }
       
            $files[$key]['name'] = $ファイル名;        
            $files[$key]['dir'] = $filedir;        
            $files[$key]['size'] = $filesize;        
       
            //保存上传文件并删除临時文件
            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;        
       
                //对图片加水印和生成缩略图
                if (in_array($fileext,array('jpg','png'))) {
                    if ($this->thumb_width) {
                        if ($this->create_thumb($filedir.$filename,$filedir.'thumb_'.$filename)) {
                            $files[$key]['thumb'] = 'thumb_'.$ファイル名;  //缩略图文件名
                        }
                                                                                     を通して                                                                                                                                                                                                                                                
$files を返す;                                                                
//サムネイルを作成し、同じ拡張子を持つサムネイルを生成します
//$src_file: ソース画像のパス、$thumb_file: サムネイルのパス 関数 create_thumb ($src_file,$thumb_file) {
                                                                                                                                                  $t_height = $this->thumb_height;
if (!file_exists($src_file)) が false を返す;

$src_info = getImageSize($src_file);

// ソース画像がサムネイル以下の場合、ソース画像をサムネイルとしてコピーします
If ($src_info[0] If (!copy($src_file,$thumb_file)) {
false を返す;                                                                                  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);
スイッチ ($fileext) {
ケース「jpg」: $src_img = ImageCreateFromJPEG($src_file); Break;'png' の場合: $src_img = ImageCreateFromPNG($src_file); Break; ケース「gif」:
$src_img = ImageCreateFromGIF($src_file); Break;                                                                                     
//トゥルーカラーのサムネイル画像を作成します $thumb_img = @ImageCreateTrueColor($t_width,$t_height);

                                                                                                                                                                                                                                                                                          If (function_exists('imagecopyresampled')) {
@ImageCopyResampled($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);                                                                                                           @ImageCopyResize($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);                                                                                     
// サムネイルを生成 スイッチ ($fileext) {
ケース「jpg」: ImageJPEG($thumb_img,$thumb_file); ケース 'gif' : ImageGIF($thumb_img,$thumb_file); 'png' の場合: ImagePNG($thumb_img,$thumb_file);                                                                                     
//一時的なイメージを破棄します
@ImageDestroy($src_img); @ImageDestroy($thumb_img);
true を返します。
                                                               
//画像に透かしを追加します
//$file: 透かしを入れるファイル
関数 create_watermark ($file) {

//ファイルが存在しない場合はリターン If (!file_exists($this->watermark_file) || !file_exists($file)) が返される。        if (!function_exists('getImageSize')) が戻る;        
                
        //检查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) {
                    ケース 1 : //顶部居左
                        $dst_x = 0; $dst_y = 0;壊す;                      
                    ケース 2 : //顶部居中
                        $dst_x = ($fileinfo[0] - $wminfo[0]) / 2; $dst_y = 0;壊す;                        
                    case 3 : //顶部居右
                        $dst_x = $fileinfo[0]; $dst_y = 0;壊す;                       
                    case 4 : //底部居左
                        $dst_x = 0; $dst_y = $fileinfo[1];壊す;                       
                    case 5 : //底部居中
                        $dst_x = ($fileinfo[0] - $wminfo[0]) / 2; $dst_y = $fileinfo[1];壊す;             
                    case 6 : //底部居右
                        $dst_x = $fileinfo[0]-$wminfo[0]; $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); //保存完全な alpha 通路情報
       
                //画像用追加水印
                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]);        
                }
       
                //保存画像
                スイッチ ($fileinfo['mime']) {
                    ケース「画像/jpeg」:
                        @imageJPEG($temp,$file);        
                        壊す;        
ケース「画像/png」:
@imagePNG($temp,$file); 壊す; ケース「画像/gif」:
@imageGIF($temp,$file); 壊す;                                                                            //ゼロタイムイメージを破棄します
@imageDestroy($temp); @imageDestroy($temp_wm);                                                                                                                                                                                                                                        
// ファイル拡張子を取得します
関数 fileext($filename) {
return strto lower(substr(strrchr($filename,'.'),1,10));                                                                  }


この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。




http://www.bkjia.com/PHPjc/929090.html

www.bkjia.com

tru​​e
http://www.bkjia.com/PHPjc/929090.html

技術記事

PHP でサムネイルを生成できるファイル アップロード クラスの例 この記事では、PHP でサムネイルを生成できるファイル アップロード クラスの例とその使用方法について説明します。参考のためにみんなで共有してください。具体的な実装方法は以下の通りです...

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