За последние 24 часа нас посетили 16927 программистов и 1703 робота. Сейчас ищут 1009 программистов ...

Фотогалерея

Тема в разделе "PHP для новичков", создана пользователем Romaxa, 4 янв 2012.

  1. Romaxa

    Romaxa Активный пользователь

    С нами с:
    4 ноя 2008
    Сообщения:
    56
    Симпатии:
    0
    Адрес:
    Москва
    Ув. программисты!
    есть возможность скриптом фото сжать так, чтобы width: была 580px ,а высота пропорциональна длине, то есть height:100% , чтоб при обработке фото оставалось как раньше, только меньшего формата(580х100%(пропорционально)). Естественно вы понимаете, что у народа фотоаппараты разные и разрешения фото естественно тоже!
    Натолкните на мысль! или укажите где посмотреть...

    Спасибо! :shock:
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    А просто посчитать пропорцию как на уроке в школе не судьба? =)
     
  3. HyUgA

    HyUgA Активный пользователь

    С нами с:
    4 янв 2012
    Сообщения:
    1
    Симпатии:
    0
    Вызывать функцию:
    PHP:
    1. <?php resizeimg("$file", "images/$file", 580, 440);
    ?>



    PHP:
    1.  
    2. <?php
    3. /***********************************************************
    4. * Функция втоматического маштабировани изображения                  *
    5. * $filename - имя исходного изображения                                        *
    6. * $smallimage - Имя уменшенной копии                                            *
    7. * $W и $h максимальные размеры изображения по ширене и высоте *
    8. ***********************************************************/
    9.  
    10. function resizeimg ($filename, $smallimage, $w, $h)
    11. {
    12.     // Определение кофицента сжатия уменьшенной копии изображения
    13.     $ratuo = $w/$h;
    14.     // Получение размера исходного изображения
    15.     $size_img = getimagesize($filename);
    16.     // Если размер меньше то маштабирования не нужно
    17.     if (($size_img[0]<$w) && ($size_img[1]<h)) return true;
    18.     // Определения кофицента сжатия исходного изображения
    19.     $src_ratio = $size_img[0]/$size_img[1];
    20.     // Вычисления размеров уменьшенно копии, чтобы при
    21.     // маштабировании были сохронины пропорции исходного изображения
    22.     if ($ratio < $src_ratio) $h = $w/$src_ratio;
    23.     else $w = $h*$src_ratio;
    24.     // Создание пустого изображения по заданным размерам
    25.     $dest_img = imagecreatetruecolor($w, $h);
    26.     // Вызыв функции создания изображения
    27.     // в зависимости от расширения исходного фаила
    28.     if ($size_img[2] == 2) $src_img = imagecreatefromjpeg($filename);
    29.     else if ($size_img[2] == 1) $src_img = imagecreatefromgif($filename);
    30.     else if ($size_img[2] == 3) $src_img = imagecreatefrompng($filename);
    31.     // Маштабировани изображения
    32.     if (!imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1])) return false;
    33.     // В зависимости от расширения имени фаила с уменьшеной копией,
    34.     // переданной в параметрах функции
    35.     // Вызываем функцию сохранения уменьшенной копии в фаил
    36.     $path_parts = pathinfo($smallimage);
    37.     if ($path_parts["extension"] == "jpg") imagejpeg($dest_img, $smallimage);
    38.     else if ($path_parts["extension"] == "jpeg") imagejpeg($dest_img, $smallimage);
    39.     else if ($path_parts["extension"] == "gif") imagegif($dest_img, $smallimage);
    40.     else if ($path_parts["extension"] == "png") imagepng($dest_img, $smallimage);
    41.     // Очищаем память от созданных изображений
    42.     imagedestroy($dest_img);
    43.     imagedestroy($src_img);
    44.     return true;
    45. }
    46. ?>
     
  4. Romaxa

    Romaxa Активный пользователь

    С нами с:
    4 ноя 2008
    Сообщения:
    56
    Симпатии:
    0
    Адрес:
    Москва
    Спасибо! мужики, но чё то как то не помогло........ буду думать дальше!
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    PHP:
    1. <?
    2. $width = 1000;
    3. $height = 2000;
    4.  
    5. $newwidth = 500;
    6. $newheight = $newwidth*$height/$width;
    округляем round или floor - хз что тебе больше по вкусу
     
  6. Romaxa

    Romaxa Активный пользователь

    С нами с:
    4 ноя 2008
    Сообщения:
    56
    Симпатии:
    0
    Адрес:
    Москва
    Ага, разобрался... сам тупонул... Спасибо!
     
  7. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    PHP:
    1.  
    2. <?php
    3. $w=580;
    4. $urlimg='img.jpg';
    5. $size=getimagesize($img);
    6. $w_t=$size[0];
    7. $h_t=$size[1];
    8. $wht=$w_t/$w;
    9. $new_h=ceil($h_t/$wht);
    10. ?>
    11.  
    Вот правильно!
     
  8. Romaxa

    Romaxa Активный пользователь

    С нами с:
    4 ноя 2008
    Сообщения:
    56
    Симпатии:
    0
    Адрес:
    Москва
    Да, я почти так же написал!
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Дак там покручи получилось! ;)