【问题标题】:PHP image resizePHP图像调整大小
【发布时间】:2012-01-09 13:16:53
【问题描述】:

我正在使用Uploadifyclass.upload.php 上传和处理图像。 这是我的代码。

require_once('/style/scripts/crop/class.upload.php');
    if (!empty($_FILES)) {
         $uc = $this->input->post('username');
         $_REQUEST['folder'] = "/project/user/".$uc."/pages".$_REQUEST['folder']."/images/gallery";
        $targetPath = $_SERVER['DOCUMENT_ROOT'] .$_REQUEST['folder']. '/';
        $pic_temp = random_string('alnum',10);
        $handle = new Upload($_FILES['Filedata']);
            if ($handle->uploaded) {
                $handle->file_src_name_body      = $pic_temp; // hard name
                $handle->file_overwrite          = true;
                $handle->file_auto_rename        = false;
                $handle->image_resize            = false;
                $handle->image_ratio_y           = false;
                $handle->image_x                 = ($handle->image_src_x < 400)?$handle->image_src_x:400;
                $handle->file_max_size           = '999999'; // max size
                $handle->Process($targetPath);
                $handle->clean(); 
                if ($handle->processed)
                    $json = array("result"      => 1, 
                                  "file"        => $_REQUEST['folder'].'/'.$handle->file_dst_name.'?'.time(),
                                  "imagewidth"  => $handle->image_dst_x,
                                  "imageheight" => $handle->image_dst_y
                                 );
                else
                    $json = array("result" => 0);

                $encoded = json_encode($json);
                echo $encoded;
                unset($encoded);    
            } 
            else { 
                $json = array("result" => 0);
                $encoded = json_encode($json);
                echo $encoded;
                unset($encoded);
            }

现在我想在上传前检查文件大小, 如果图像大小超过 1MB,则应重新调整大小 [禁止裁剪或其他内容...] 以节省磁盘空间。 如果小于 1MB 则直接上传。

我怎样才能做到这一点?

该项目正在使用 Codeigniter 框架。

【问题讨论】:

    标签: php codeigniter image-processing upload


    【解决方案1】:

    上传文件后,您可以在以下位置访问它:

    $_FILES['some_name']['tmp_name']
    

    所以要检查它的大小,你可以这样做:

    $size = filesize($_FILES['some_name']['tmp_name']);
    

    有关更多信息,请参阅filesize 上的文档。

    【讨论】:

      【解决方案2】:
      $(document).ready(function() {
          $('#id_image').bind('change', function() {
              if(this.files[0].size > 1000141){
                  $('#formerror').html('File is too big');
                  $('#myformbutton').hide();
              }else{
                  $('#formerror').html(' ');
                  $('#myformbutton').show('slow');
              }
          });
      });
      
          <div id="formerror"></div>
          <form action="myaction" method="post" id="myform" enctype="multipart/form-data">
               <label for="id_title">Title</label>
               <input id="id_title" type="text" name="title" maxlength="255" />
               <label for="id_image">Image</label>
               <input type="file" name="image" id="id_image" />
               <input type="button" id="myformbutton" value="Add!" />
          </form>
      

      【讨论】:

      • 我正在使用uploadify 及其基于闪存的上传器,我不知道如何访问您的答案等值,这也是客户端验证。
      【解决方案3】:

      Uploadify 有一个参数来限制文件大小:sizeLimit。如果设置了,它将阻止文件被提交。

      http://www.uploadify.com/documentation/options/sizelimit/

      大多数(如果不是全部)基于 Flash 的上传器,如 swf、solmetra 等,都允许您在上传前检查文件大小。此外,从技术上讲,您也可以自己在服务器上调整文件大小,但这确实会浪费您的带宽。

      【讨论】:

        猜你喜欢
        • 2011-11-25
        • 1970-01-01
        • 2011-03-31
        • 2011-08-30
        • 2011-02-18
        • 2013-01-16
        • 2015-09-12
        • 2010-09-20
        • 2012-02-28
        相关资源
        最近更新 更多