Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с изображением и закачкой

13K
05 августа 2006 года
T3xTuR3
16 / / 16.03.2006
Вот у меня такая проблема... я решил на сайт написать скрипт аватаров для пользователей.. но уже 3-ий день мучаюсь с одной проблемой.. , не как не могу придумать как же сделать чтоб при закачке изображения её размер , если он например меньше 100 на 100 пикселей устаннавливался 100 на 100 , а если меньше .. просто не менялся..

дайте мож какие-нибуть советы, или какой-нибуть хотя бы похожий скрипт... Буду очень благодарен ..
15
05 августа 2006 года
shaelf
2.7K / / 04.05.2005
php.net. Поиск по GD. Это расширение для работы с изображениями.
8
06 августа 2006 года
mfender
3.5K / / 15.06.2005
[QUOTE=T3xTuR3]Вот у меня такая проблема... я решил на сайт написать скрипт аватаров для пользователей.. но уже 3-ий день мучаюсь с одной проблемой.. [/QUOTE]

Четвёртые сутки пылают станицы...
Чё ж так долго?
Лови, друк, специально для тебя писал целых пятнадцать минут:

Код:
/**
 * Функция приводит к нужным размерам картинку и записывает её в указанный файл
 *
 * @param String $InputFile - строка с адресом загружаемого (исходного) файла
 * @param String $OutputFile - строка с адресом записываемого (выходного) файла
 * @param Integer $MaxWidth - максимально допустимая ширина выходного файла
 * @param Integer $MaxHeight - максимально допустимая высота выходного файла
 * @param Integer $Compression - качество сжатия для JPEG
 */

function SaveAvatar($InputFile, $OutputFile, $MaxWidth, $MaxHeight, $Compression = 80){
    /** Для начала определим пропорции исходной картинки */
    $IFSizes = getimagesize($InputFile);
    $Proportions = $IFSizes[0] / $IFSizes[1];
    /** Соответственно, если результат >1 - картинка горизонтальная, иначе - вертикальная */

    /** Теперь узнаем, нужно-ли её уменьшать:
     * если ширина, или высота превышаюют максимально допустимые размеры,
     * то начинаем над ней глумиться */

    if($IFSizes[0] > $MaxWidth || $IFSizes[1] > $MaxHeight){
        if($Proportions > 1){
            $OFSizes[0] = $MaxWidth;
            $OFSizes[1] = $MaxWidth / $Proportions;
        }
        elseif ($Proportions <= 1){
            $OFSizes[0] = $MaxHeight * $Proportions;
            $OFSizes[1] = $MaxHeight;
        }
    }
    /** Иначе, если размеры не превышают максимальных,
     * оставляем всё как есть */

    else{
        $OFSizes[0] = $IFSizes[0];
        $OFSizes[1] = $IFSizes[1];
    }
    /** Таким образом, мы привели размеры, которые будут на выходе
     * и создаем канву для него*/

    $OutImage = imagecreatetruecolor($OFSizes[0], $OFSizes[1]);
   
    /* Создаём канву из входящего файла */
    switch ($IFSizes['mime']){
        case "image/jpeg":
        $OriginalImage = imagecreatefromjpeg($InputFile);
        break;
       
        case "image/gif":
        $OriginalImage = imagecreatefromgif($InputFile);
        break;
       
        case "image/png":
        $OriginalImage = imagecreatefrompng($InputFile);
        break;
    }
   
    /* Наносим изображение на нашу выходную канву */
    imagecopyresampled($OutImage, $OriginalImage, 0, 0, 0, 0, $OFSizes[0], $OFSizes[1], $IFSizes[0], $IFSizes[1]);
   
    /*Выводим картинку в файл*/
    preg_match("/^.+\.(.*)$/", $OutputFile, $arr);
    if(is_array($arr) && isset($arr[1]) && is_string($arr[1])){
        switch ($arr[1]){
            case "jpg":
            imagejpeg($OutImage, $OutputFile, $Compression);
            break;
           
            case "gif":
            imagegif($OutImage, $OutputFile);
            break;
           
            case "png":
            imagepng($OutImage, $OutputFile);
            break;            
        }
    }
}


Как воспользоваться ею, надеюсь понятно из описания. Т.е., примерно так:
 
Код:
SaveAvatar("/home/myaccount/tmp/inputfile.jpg", "/home/myaccount/avatars/avatar23894723876.gif", 100, 100);
256
06 августа 2006 года
foxweb
1.0K / / 27.07.2005
http://www.codenet.ru/webmast/php/Image-Resize-GD/ - когда-то на коденете статью на эту тему писал... есть усовершенствованная версия скрипта, автоматически различающая гифы, пнг, жпег... могу помочь через мыло.
13K
06 августа 2006 года
T3xTuR3
16 / / 16.03.2006
Спасибо всем за помощь , mfender ))) скрипт отлично работает , ой вау.. как же я рад)))) терь буду спокойно спать))
8
06 августа 2006 года
mfender
3.5K / / 15.06.2005
[QUOTE=foxweb]http://www.codenet.ru/webmast/php/Image-Resize-GD/ - когда-то на коденете статью на эту тему писал... есть усовершенствованная версия скрипта, автоматически различающая гифы, пнг, жпег... могу помочь через мыло.[/QUOTE]
Интересная статья. Я года полтора назад как-раз делал нечто подобное: у меня из больших фотографий налету thumbnails формировались, рамочка лепилась, но получилось очень громоздко. Сейчас-то, конечно всё уже в мозгах осело и успокоилось, потому получается проще и лаконичней... :)
Вот, как раз сейчас сайтец рисую простенький ( http://favorit-base.ru ): как раз там налету фотографиям приделываются рамочки, логотипчик, всё по ширине уменьшается...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог