За последние 24 часа нас посетили 22923 программиста и 1723 робота. Сейчас ищут 1867 программистов ...

Прошу помочь с кодом

Тема в разделе "Сделайте за меня", создана пользователем Luce, 2 окт 2014.

  1. Luce

    Luce Новичок

    С нами с:
    10 авг 2014
    Сообщения:
    6
    Симпатии:
    0
    Не очень хорошо шарю в php. код сохраняет картинку 90х90 в базу и в папку, а картинку 250х250 сохраняет только в базу. Помогите пожалуйста с этой проблемой.
    Код (PHP):
    1. if ($_POST['submit'] == 'Зарегистрировать') {
    2.     $err = array();
    3.  
    4.     if (empty($_FILES['fupload']['name'])) {
    5. //если переменной не существует (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет аватара"
    6.         $image = "net-small-logo.png"; //можете нарисовать net-logo.jpg или взять в исходниках
    7.     } else {
    8. //иначе - загружаем изображение пользователя
    9.         $path_to_directory = 'images/tovars/'; //папка, куда будет загружаться начальная картинка и ее сжатая копия
    10.  
    11.  
    12.         if (preg_match('/[.](JPG)|(jpg)|(jpeg)|(gif)|(GIF)|(png)|(PNG)$/', $_FILES['fupload']['name'])) {//проверка формата исходного изображения
    13.             $filename = $_FILES['fupload']['name'];
    14.             $source = $_FILES['fupload']['tmp_name'];
    15.             $target = $path_to_directory . $filename;
    16.             move_uploaded_file($source, $target); //загрузка оригинала в папку $path_to_90_directory
    17.  
    18.             if (preg_match('/[.](GIF)|(gif)$/', $filename)) {
    19.                 $im = imagecreatefromgif($path_to_directory . $filename); //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    20.             }
    21.             if (preg_match('/[.](PNG)|(png)$/', $filename)) {
    22.                 $im = imagecreatefrompng($path_to_directory . $filename); //если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    23.             }
    24.  
    25.             if (preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
    26.                 $im = imagecreatefromjpeg($path_to_directory . $filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    27.             }
    28.             if (preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
    29.                 $im = imagecreatefromjpeg($path_to_directory . $filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    30.             }
    31.  
    32.  
    33.             $w = 90;
    34.             $w_src = imagesx($im); //вычисляем ширину
    35.             $h_src = imagesy($im); //вычисляем высоту изображения
    36.  
    37.             $s = 250;
    38.             $w_srcl = imagesx($im); //вычисляем ширину
    39.             $h_srcl = imagesy($im); //вычисляем высоту изображения
    40.  
    41.             $dest = imagecreatetruecolor($w, $w);
    42.  
    43.             // вырезаем квадратную серединку по x, если фото горизонтальное 
    44.             if ($w_src > $h_src)
    45.                 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));
    46.  
    47.             if ($w_srcl > $h_srcl)
    48.                 imagecopyresampled($dest, $im, 0, 0, round((max($w_srcl, $h_srcl) - min($w_srcl, $h_srcl)) / 2), 0, $s, $s, min($w_srcl, $h_srcl), min($w_srcl, $h_srcl));
    49.  
    50.             // вырезаем квадратную верхушку по y, 
    51.             // если фото вертикальное (хотя можно тоже серединку) 
    52.             if ($w_src < $h_src)
    53.                 imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, min($w_src, $h_src), min($w_src, $h_src));
    54.  
    55.             if ($w_srcl < $h_srcl)
    56.                 imagecopyresampled($dest, $iml, 0, 0, 0, 0, $s, $s, min($w_srcl, $h_srcl), min($w_srcl, $h_srcl));
    57.  
    58.             // квадратная картинка масштабируется без вырезок 
    59.             if ($w_src == $h_src)
    60.                 imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
    61.  
    62.             if ($w_srcl == $h_srcl)
    63.                 imagecopyresampled($dest, $im, 0, 0, 0, 0, $s, $s, $w_srcl, $w_srcl);
    64.  
    65.  
    66.             $date = time(); //вычисляем время в настоящий момент.
    67.             imagejpeg($dest, $path_to_directory . $date . ".png");
    68.  
    69.             $image = $date . ".png"; //заносим в переменную путь до аватара.
    70.             //удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
    71.             $big_image = "a" . $date . ".png";
    72.             
    73.             
    74.         }
    75.         else {
    76.             //в случае несоответствия формата, выдаем соответствующее сообщение
    77.  
    78.             exit("Логотип должен быть в формате <strong>JPG,GIF или PNG</strong>"); //останавливаем выполнение сценариев
    79.         }
    80.     } 
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Вы пытаетесь сохранить эти разные файлы с одним и тем же именем.
    http://php.ru/manual/function.imagecopyresampled.html
    первый параметр - это имя файла куда сохранить изображение. Очевидно, что для двух разных файлов стоит иметь и два разных имени.
     
  3. Luce

    Luce Новичок

    С нами с:
    10 авг 2014
    Сообщения:
    6
    Симпатии:
    0
    Не совсем понял: первый параметр-это имя файла, куда сохранить изображение. У меня не два разных файла, а один файл который нужно сохранить под разными именами и разными размерами. если смотреть по мануалу то, у меня должен отличаться второй параметр в imagecopyresampled, в котором храниться путь к файлу и его имя. Немного ковырнув понял, что ошибка в
    Код (PHP):
    1. imagejpeg($destl, $path_to_directory ."a". $date . ".png") 
    .
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    как успехи?
     
  5. Luce

    Luce Новичок

    С нами с:
    10 авг 2014
    Сообщения:
    6
    Симпатии:
    0
    Спасибо все работает. Я просто тот же сайт до сих-пор делаю, теперь он еще и магазин.
    Вот, разделил на два условия, чтобы не путаться.
    Код (PHP):
    1. if ($_POST['submit'] == 'Зарегистрировать') {
    2.     $err = array();
    3.  
    4.     if (empty($_FILES['fupload']['name'])) {
    5.  
    6.         $image = "net-small-logo.png";
    7.         $big_image = "net-logo.png";
    8.     } else {
    9. //иначе - загружаем изображение пользователя
    10.         $path_to_directory = 'images/tovars/'; //папка, куда будет загружаться начальная картинка и ее сжатая копия
    11.  
    12.  
    13.         if (preg_match('/[.](JPG)|(jpg)|(jpeg)|(gif)|(GIF)|(png)|(PNG)$/', $_FILES['fupload']['name'])) {//проверка формата исходного изображения
    14.             $filename = $_FILES['fupload']['name'];
    15.             $source = $_FILES['fupload']['tmp_name'];
    16.             $target = $path_to_directory . $filename;
    17.             move_uploaded_file($source, $target); 
    18.  
    19.             if (preg_match('/[.](GIF)|(gif)$/', $filename)) {
    20.                 $im = imagecreatefromgif($path_to_directory . $filename); //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    21.             }
    22.             if (preg_match('/[.](PNG)|(png)$/', $filename)) {
    23.                 $im = imagecreatefrompng($path_to_directory . $filename); //если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    24.             }
    25.  
    26.             if (preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
    27.                 $im = imagecreatefromjpeg($path_to_directory . $filename); 
    28.             }
    29.  
    30.  
    31.             $w = 90;
    32.             $w_src = imagesx($im); //вычисляем ширину
    33.             $h_src = imagesy($im); //вычисляем высоту изображения
    34.  
    35.             $dest = imagecreatetruecolor($w, $w);
    36.  
    37.             // вырезаем квадратную серединку по x, если фото горизонтальное 
    38.             if ($w_src > $h_src)
    39.                 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));
    40.  
    41.             // вырезаем квадратную верхушку по y, 
    42.             // если фото вертикальное (хотя можно тоже серединку) 
    43.             if ($w_src < $h_src)
    44.                 imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, min($w_src, $h_src), min($w_src, $h_src));
    45.  
    46.             // квадратная картинка масштабируется без вырезок 
    47.             if ($w_src == $h_src)
    48.                 imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
    49.  
    50.  
    51.             $date = time(); //вычисляем время в настоящий момент.
    52.             imagejpeg($dest, $path_to_directory . $date . ".png");
    53.  
    54.             $image = $date . ".png"; //заносим в переменную путь до аватара.
    55.             
    56.             $big_image = $filename;         
    57.             
    58.         }
    59.         else {
    60.             //в случае несоответствия формата, выдаем соответствующее сообщение
    61.  
    62.             exit("Логотип должен быть в формате <strong>JPG,GIF или PNG</strong>"); //останавливаем выполнение сценариев
    63.         }
    64.     }
    65.     if (empty($_FILES['fupload']['name'])) {
    66.  
    67.         $big_image = "net-logo.png"; 
    68.     } else {
    69.  
    70.         $path_to_directory = 'images/tovars/'; //папка, куда будет загружаться начальная картинка и ее сжатая копия
    71.  
    72.  
    73.         if (preg_match('/[.](JPG)|(jpg)|(jpeg)|(gif)|(GIF)|(png)|(PNG)$/', $_FILES['fupload']['name'])) {//проверка формата исходного изображения
    74.             $filenamel = $_FILES['fupload']['name'];
    75.             $sourcel = $_FILES['fupload']['tmp_name'];
    76.             $targetl = $path_to_directory . $filenamel;
    77.             move_uploaded_file($sourcel, $targetl); //загрузка оригинала в папку $path_to_90_directory
    78.  
    79.             if (preg_match('/[.](GIF)|(gif)$/', $filenamel)) {
    80.                 $iml = imagecreatefromgif($path_to_directory . $filenamel); //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    81.             }
    82.             if (preg_match('/[.](PNG)|(png)$/', $filename)) {
    83.                 $iml = imagecreatefrompng($path_to_directory . $filenamel); //если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    84.             }
    85.  
    86.             if (preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filenamel)) {
    87.                 $iml = imagecreatefromjpeg($path_to_directory . $filenamel); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    88.             }
    89.  
    90.             $s = 250;
    91.             $w_srcl = imagesx($iml); //вычисляем ширину
    92.             $h_srcl = imagesy($iml); //вычисляем высоту изображения
    93.  
    94.             $destl = imagecreatetruecolor($s, $s);
    95.  
    96.             // вырезаем квадратную серединку по x, если фото горизонтальное 
    97.             if ($w_srcl > $h_srcl)
    98.                 imagecopyresampled($destl, $iml, 0, 0, round((max($w_srcl, $h_srcl) - min($w_srcl, $h_srcl)) / 2), 0, $s, $s, min($w_srcl, $h_srcl), min($w_srcl, $h_srcl));
    99.  
    100.             if ($w_srcl < $h_srcl)
    101.                 imagecopyresampled($destl, $iml, 0, 0, 0, 0, $s, $s, min($w_srcl, $h_srcl), min($w_srcl, $h_srcl));
    102.  
    103.             if ($w_srcl == $h_srcl)
    104.                 imagecopyresampled($destl, $iml, 0, 0, 0, 0, $s, $s, $w_srcl, $w_srcl);
    105.  
    106.  
    107.             $date = time(); //вычисляем время в настоящий момент.
    108.             imagejpeg($destl, $path_to_directory ."a". $date . ".png");
    109.  
    110.             $big_image ="a". $date . ".png"; //заносим в переменную путь до аватара.
    111.  
    112.           
    113.         }
    114.         else {
    115.             
    116.  
    117.             exit("Логотип должен быть в формате <strong>JPG,GIF или PNG</strong>"); 
    118.         }
    119.     }