Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [PHP]изменение размера картинки 
:(
    Опции темы
dembel14
Дата 25.9.2008, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 18.5.2008

Репутация: нет
Всего: нет



Добрый день, подскажите код, который уменьшает картинку при загрузке, желательно, чтобы в коде была переменная в которую записывается адрес картинки, и переменная в которую записывается директория для сохранения.
Заранее спасибо.
PM MAIL   Вверх
bars80080
Дата 26.9.2008, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 8
Всего: 315



использую это:
Код
function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $proportion=false, $quality=100) {
    if(!file_exists($src)) return false;
    $size = getimagesize($src);
    if($size === false) return false;   
    if($proportion === true) {
        $h0 = $height;
        $height = ($width/$size[0])*$size[1];
        if($height > $h0) { $height = $h0; $width = ($height/$size[1])*$size[0]; }}
    if($width > $size[0]) $width = $size[0];
    if($height > $size[1]) $height = $size[1];
    $format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1));
    $icfunc = 'imagecreatefrom'.$format;
    if(!function_exists($icfunc)) return false;
    $x_ratio = $width/$size[0];
    $y_ratio = $height/$size[1];
    $ratio = min($x_ratio, $y_ratio);
    $use_x_ratio = ($x_ratio == $ratio);
    if($use_x_ratio) { $new_width = $width; $new_left = 0; } 
    else { $new_width = floor($size[0] * $ratio); $new_left = floor(($width - $new_width) / 2); }
    if(!$use_x_ratio) { $new_height = $height; $new_top = 0; }
    else { $new_height = floor($size[1] * $ratio); $new_top = floor(($height - $new_height) / 2); }
    $isrc = $icfunc($src);
    $idest = imagecreatetruecolor($width, $height);
    if(is_array($dest)) { 
        $nd = explode('.', $src); 
        $ndc = count($nd); 
        $nd[$ndc - 2] .= $dest[0]; $dest = implode('.', $nd); }
    imagefill($idest, 0, 0, $rgb);
    imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]);
    imagejpeg($idest, $dest, $quality);
    imagedestroy($isrc);
    imagedestroy($idest);
    return $dest; }

function upLoader($userfile, $uploaddir = 'upload', $save = 'image', $data = array(160, 120, true, 100), $copy = 'true', $newname = '') {
    global $mistake, $BASE_DIR;          
    $temp = $_FILES[$userfile]['tmp_name'];
    $name = $_FILES[$userfile]['name']; echo $name;
    $size = $_FILES[$userfile]['size'];
    $type = $_FILES[$userfile]['type'];
    $error = $_FILES[$userfile]['error']; $b = false;
    if(strlen($name) > 3) { $type = strtolower(substr($name, -4)); } else $type = '';
    if(!empty($newname)) { 
        $name = $newname;
        if(strlen($name) > 3) { $type1 = strtolower(substr($name, -4)); } else $type1 = '';
        if($save == 'image' && $type != $type1) { 
            if($type == '.jpg' || $type == '.gif' || $type == '.png') {
                $name .= $type;
            }
            elseif($type == 'jpeg') { $name .= '.'.$type; }
        }
    }
    
    if($error > 0) { 
        $mistake = 'Загрузка не выполнена: '.$name.' '; switch($error) {
            case 1: $mistake .= 'размер файла больше upload_max_filesize'; break;
            case 2: $mistake .= 'размер файла больше max_file_size'; break;
            case 3: $mistake .= 'загружена только часть файла'; break;
            case 4: $mistake .= 'файл не загружен'; break; }
        return $b; }
    $upfile = $uploaddir.'/'.$name; 
    @mkdir($uploaddir, 0755);
    if(is_uploaded_file($temp)) {
        if(!move_uploaded_file($temp, $upfile)) {          
            $mistake = 'Невозможно переслать файл в каталог назначения'; return $b; }}
    else { $mistake = 'Возможно атака через загрузку файла. Файл: '.$name; return $b; }
    $mistake = 'Файл успешно загружен '.$name; $res = strstr($upfile, '../');
    if($res) { $res1 = explode('../', $upfile); $upfile = $res1[1]; }
    $b = $upfile;
    if(strstr($b, $BASE_DIR)) {
        $a = strlen($BASE_DIR);
        $b = substr($upfile, $a); }
    if($save == 'image' and $copy == 'true') {
        $b = img_resize($b, array('_small'), $data[0], $data[1], '', $data[2], $data[3]); }
    return $b;    
}


использовать так:

1. в форме пишем два поля:
Код

<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="pict" />
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
...
второе поле - одно на всю форму, указывает максимальный объём пересылаемых данных

2. в обработчике пхп, пишем:
Код
$res = upLoader('pict', 'catalog');
, где первый параметр - имя поля, второй - папка, куда сохранить
в $res получаем путь сохранённой картинки.
далее там много опций, которыми можно и не пользоваться. сам разберёшься

может конечно и не работать, так как выдрано из контекста, но функции рабочие
PM MAIL WWW   Вверх
dembel14
Дата 28.9.2008, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 18.5.2008

Репутация: нет
Всего: нет



bars80080,  не работает
PM MAIL   Вверх
bars80080
Дата 28.9.2008, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 8
Всего: 315



надо настраивать и проверять по этапно
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1085 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.