Изменение размера изображения PHP - PullRequest
0 голосов
/ 30 ноября 2011

Я использую Uploadify и class.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);
            }

Теперь я хочу проверить размер файла перед загрузкой, если изображение размером более 1 МБ, то его необходимо изменить размер [Без обрезки или другие вещи ...] для экономии места на диске.если он меньше 1 МБ, его следует загрузить напрямую.

Как мне этого добиться?

Проект выполняется на платформе Codeigniter.

Ответы [ 3 ]

0 голосов
/ 01 декабря 2011

Uploadify имеет параметр для ограничения размера файла: sizeLimit. Если этот параметр установлен, файл не будет отправлен.

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

Большинство (если не все) загрузчиков, основанных на флэш-памяти, таких как swf, solmetra и т. Д., Позволяют проверить размер файла перед загрузкой. Кроме того, вы также можете технически изменить размер файла самостоятельно на сервере, но это приводит к потере пропускной способности.

0 голосов
/ 01 декабря 2011

Когда файл загружен, вы можете получить к нему доступ:

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

Таким образом, чтобы проверить его размер, вы можете сделать что-то вроде:

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

См. Документацию на filesize для получения дополнительной информации.

0 голосов
/ 30 ноября 2011
$(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>
...