За последние 24 часа нас посетили 17732 программиста и 1724 робота. Сейчас ищут 1052 программиста ...

изображение

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

  1. Panich

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

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Есть вот это:
    Код (Text):
    1. $imageinfo = getimagesize($_FILES['fupload']['tmp_name']);
    2.                         if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg' && $imageinfo['mime'] != 'image/jpg' && $imageinfo['mime'] != 'image/png')
    3.                         {
    4.                         exit ("Что-то Вы не то грузить пытаетесь!");
    5.                         }
    6.                         else
    7.                         {
    8.                             //делаем большую картинку
    9.                             $path_to_directory = "files/avatars/";
    10.                             $filename = $_FILES['fupload']['name'];
    11.                             $source = $_FILES['fupload']['tmp_name'];
    12.                             $date = time();
    13.                             $target = $path_to_directory."big_".$date.".jpg";
    14.                             move_uploaded_file($source, $target);
    15.                             if(preg_match('/[.](GIF)|(gif)$/', $filename))
    16.                             {                            
    17.                             $im = imagecreatefromgif($target);
    18.                             }                                
    19.                             if(preg_match('/[.](PNG)|(png)$/', $filename))
    20.                             {
    21.                             $im = imagecreatefrompng($target);
    22.                             }                
    23.                             if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename))
    24.                             {        
    25.                             $im = imagecreatefromjpeg($target);        
    26.                             }
    27.                             $w = 120;
    28.                             $w_src = imagesx($im);
    29.                             $h_src = imagesy($im);
    30.                             $dest = imagecreatetruecolor ($w,$w);
    31.                             if ($w_src > $h_src)
    32.                             {
    33.                             imagecopyresampled ($dest, $im, 0, 0, round ((max($w_src,$h_src)-min($w_src,$h_src))/2), 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));        
    34.                             }
    35.                             else
    36.                             {
    37.                                 if ($w_src < $h_src)
    38.                                 {
    39.                                 imagecopyresampled ($dest, $im, 0, 0, 0, 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));  
    40.                                 }
    41.                                 else
    42.                                 {
    43.                                     if ($w_src == $h_src)
    44.                                     {
    45.                                     imagecopyresampled ($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
    46.                                     }
    47.                                 }
    48.                             }
    49.                             imagejpeg($dest, $path_to_directory.$date.".jpg");
    50.                             $avatar = $path_to_directory.$date.".jpg";
    51.                             $big_avatar = $target;
    Что-то тут передрал с сайтов,что-то сам дописал...
    Смысл: берет изображение,если не квадрат,то обрезает снизу и делает 120 на 120.
    Хочу:что бы создавало не только 120 на 120,но и копию изображения,но одна сторона 600,а вторая остаток от оригинала + белый фон.Как-то так...
    Вопрос:как это сделать?
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Объясните толком, что сделать нужно. Не понятно, что значит
     
  3. Panich

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

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Нужно,что бы изображение не обрезалось,а просто уменьшалось в размерах.
    Ну,вот есть 1020х800.Я хочу получить 102х102...А у меня при уменьшении получится 102х80,и вот остальные 22 пикселя (лишние) хочу что бы замещались белым цветом...
     
  4. Ke1eth

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

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    Что мешает сделать 102х102 белого цвета, а сверху положить уменьшенную 102х80?
     
  5. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Код (Text):
    1. $im = imagecreatetruecolor(102, 102);
    2.  
    3. // установка белого фона
    4. $white = imagecolorallocate($im, 255, 255, 255);
    5. imagefill($im, 0, 0, $white);
    6.  
    7. // копирование собственно изображения
    8. imagecopyresempled( $im , $im102x80, 0, 0, 0, 0, 102, 80, 102, 80);
     
  6. Panich

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

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Огромное спасибо Вам за помощь!!!Очень помогло...,но я решил чуть по другому сделать:
    Вот что получилось:
    Код (Text):
    1. $path_to_directory = "files/avatars/";
    2.                         $filename = $_FILES['fupload']['name'];
    3.                         $source = $_FILES['fupload']['tmp_name'];
    4.                         $date = time();
    5.                         $target = $path_to_directory."big_".$date.".jpg";
    6.                         move_uploaded_file($source, $target);
    7.                         if(preg_match('/[.](GIF)|(gif)$/', $filename))
    8.                         {                            
    9.                         $im = imagecreatefromgif($target);
    10.                         }                                
    11.                         if(preg_match('/[.](PNG)|(png)$/', $filename))
    12.                         {
    13.                         $im = imagecreatefrompng($target);
    14.                         }                
    15.                         if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename))
    16.                         {        
    17.                         $im = imagecreatefromjpeg($target);        
    18.                         }
    19.                         //уменьшенную копию орегинала
    20.                         $wB = 600;
    21.                         $w = 140;
    22.                         $w_src = imagesx($im);
    23.                         $h_src = imagesy($im);
    24.                         $dest = imagecreatetruecolor ($w,$w);
    25.                         if ($w_src > $h_src)
    26.                         {
    27.                         $q=$w_src/$h_src;
    28.                         $qwe=$wB/$q;
    29.                         $destB = imagecreatetruecolor ($wB, $qwe);
    30.                         imagecopyresampled ($dest, $im, 0, 0, round ((max($w_src,$h_src)-min($w_src,$h_src))/2), 0, $qwe, $w, min($w_src,$h_src), min($w_src,$h_src));          
    31.                         imagecopyresampled ($destB, $im, 0, 0, 0, 0, $wB, $qwe, $w_src, $h_src);          
    32.                         }
    33.                         else
    34.                         {
    35.                             if ($w_src < $h_src)
    36.                             {
    37.                             $q=$h_src/$w_src;
    38.                             $qwe=600/$q;
    39.                             $destB = imagecreatetruecolor ($qwe, $wB);
    40.                             imagecopyresampled ($dest, $im, 0, 0, 0, 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));  
    41.                             imagecopyresampled ($destB, $im, 0, 0, 0, 0, $qwe, $wB, $w_src, $h_src);  
    42.                             }
    43.                             else
    44.                             {
    45.                                 if ($w_src == $h_src)
    46.                                 {
    47.                                 $destB = imagecreatetruecolor ($wB,$wB);
    48.                                 imagecopyresampled ($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
    49.                                 imagecopyresampled ($destB, $im, 0, 0, 0, 0, $wB, $wB, $w_src, $h_src);
    50.                                 }
    51.                             }
    52.                         }
    53.                         //удалить орегинал
    54.                         imagejpeg($dest, $path_to_directory.$date.".jpg");
    55.                         imagejpeg($destB, $path_to_directory."big_".$date.".jpg");
    56.                         $avatar = $path_to_directory.$date.".jpg";
    57.                         $big_avatar = $path_to_directory."big_".$date.".jpg";
    58.                         $sql16 = "SELECT `avatar` FROM `fotouser` WHERE `id_user_ava` = '$old_id'";
    59.                         $result16 = mysql_query($sql16, $db_foto)or die("Ошибка в запросе: " . mysql_error());
    Получается одно изображение 140х140,а второе уменьшенная копия от оригинала,но большая сторона не больше 600px.
    Вот такой я замечательный супер программёр!!!))))