За последние 24 часа нас посетили 51398 программистов и 1758 роботов. Сейчас ищут 673 программиста ...

Загрузка картинок

Тема в разделе "PHP для новичков", создана пользователем zlatman, 22 дек 2009.

  1. zlatman

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

    С нами с:
    22 дек 2009
    Сообщения:
    11
    Симпатии:
    0
    Доброе время суток. Помогите разобраться, нашел код загрузки аватары в инете переделал маленько под себя и что то не работает... уже голову сломал... не могу найти ошибку...
    Код (Text):
    1. if (empty($_FILES['fupload']['name']))
    2. {
    3. //если переменной не существует (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет аватара"
    4. $jpgpost = "jpgposts/net-avatara.jpg"; //можете нарисовать net-avatara.jpg или взять в исходниках
    5. }
    6.  
    7. else
    8. {
    9. //иначе - загружаем изображение пользователя
    10. $path_to_90_directory = 'jpgposts/';//папка, куда будет загружаться начальная картинка и ее сжатая копия
    11.  
    12.    
    13. if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения
    14.      { 
    15.            
    16.         $filename = $_FILES['fupload']['name'];
    17.         $source = $_FILES['fupload']['tmp_name'];  
    18.         $target = $path_to_90_directory . $filename;
    19.         move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory
    20.  
    21.     if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
    22.     $im = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    23.     }
    24.     if(preg_match('/[.](PNG)|(png)$/', $filename)) {
    25.     $im = imagecreatefrompng($path_to_90_directory.$filename) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    26.     }
    27.    
    28.     if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
    29.         $im = imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    30.     }
    31.    
    32. // Создание квадрата 90x90
    33. // dest - результирующее изображение
    34. // w - ширина изображения
    35. // ratio - коэффициент пропорциональности
    36.  
    37. $w = 90;  // квадратная 90x90. Можно поставить и другой размер.
    38.  
    39. // создаём исходное изображение на основе
    40. // исходного файла и определяем его размеры
    41. $w_src = imagesx($im); //вычисляем ширину
    42. $h_src = imagesy($im); //вычисляем высоту изображения
    43.  
    44.          // создаём пустую квадратную картинку
    45.          // важно именно truecolor!, иначе будем иметь 8-битный результат
    46.          $dest = imagecreatetruecolor($w,$w);
    47.  
    48.          // вырезаем квадратную серединку по x, если фото горизонтальное
    49.          if ($w_src>$h_src)
    50.          imagecopyresampled($dest, $im, 0, 0,
    51.                           round((max($w_src,$h_src)-min($w_src,$h_src))/2),
    52.                           0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
    53.  
    54.          // вырезаем квадратную верхушку по y,
    55.          // если фото вертикальное (хотя можно тоже серединку)
    56.          if ($w_src<$h_src)
    57.          imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
    58.                           min($w_src,$h_src), min($w_src,$h_src));
    59.  
    60.          // квадратная картинка масштабируется без вырезок
    61.          if ($w_src==$h_src)
    62.          imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
    63.          
    64.  
    65. $date=time(); //вычисляем время в настоящий момент.
    66. imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.
    67.  
    68. //почему именно jpg? Он занимает очень мало места + уничтожается анимирование gif изображения, которое отвлекает пользователя. Не очень приятно читать его комментарий, когда краем глаза замечаешь какое-то движение.
    69.  
    70. $jpgpost = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.
    71.  
    72. $delfull = $path_to_90_directory.$filename;
    73. unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
    74. }
    75. else
    76.          {
    77.          //в случае несоответствия формата, выдаем соответствующее сообщение
    78.          
    79. exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>"); //останавливаем выполнение сценариев
    80.  
    81.          }
    82. //конец процесса загрузки и присвоения переменной $jpgpost адреса загруженной авы
    83. }
    Заранее благодарен
     
  2. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    мм..
    а что за ошибка то?
     
  3. zlatman

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

    С нами с:
    22 дек 2009
    Сообщения:
    11
    Симпатии:
    0
    Уточнюсь.... ошибку не дает, но и картинку не загружает пишет "Данные успешно добавлены! Добавить запись"

    Вот полный код.

    Код (Text):
    1. <?php  if (empty($_FILES['fupload']['name']))
    2. {
    3. //если переменной не существует (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет аватара"
    4. $jpgpost = "jpgposts/net-avatara.jpg"; //можете нарисовать net-avatara.jpg или взять в исходниках
    5. }
    6.  
    7. else
    8. {
    9. //иначе - загружаем изображение пользователя
    10. $path_to_90_directory = 'jpgposts/';//папка, куда будет загружаться начальная картинка и ее сжатая копия
    11.  
    12.    
    13. if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения
    14.     {    
    15.            
    16.       $filename = $_FILES['fupload']['name'];
    17.       $source = $_FILES['fupload']['tmp_name'];    
    18.       $target = $path_to_90_directory . $filename;
    19.       move_uploaded_file($source, $target);//загрузка оригинала в папку $path_to_90_directory
    20.  
    21.    if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
    22.    $im = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    23.    }
    24.    if(preg_match('/[.](PNG)|(png)$/', $filename)) {
    25.    $im = imagecreatefrompng($path_to_90_directory.$filename) ;//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    26.    }
    27.    
    28.    if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
    29.       $im = imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    30.    }
    31.    
    32. // Создание квадрата 90x90
    33. // dest - результирующее изображение
    34. // w - ширина изображения
    35. // ratio - коэффициент пропорциональности
    36.  
    37. $w = 90;  // квадратная 90x90. Можно поставить и другой размер.
    38.  
    39. // создаём исходное изображение на основе
    40. // исходного файла и определяем его размеры
    41. $w_src = imagesx($im); //вычисляем ширину
    42. $h_src = imagesy($im); //вычисляем высоту изображения
    43.  
    44.          // создаём пустую квадратную картинку
    45.          // важно именно truecolor!, иначе будем иметь 8-битный результат
    46.          $dest = imagecreatetruecolor($w,$w);
    47.  
    48.          // вырезаем квадратную серединку по x, если фото горизонтальное
    49.          if ($w_src>$h_src)
    50.          imagecopyresampled($dest, $im, 0, 0,
    51.                           round((max($w_src,$h_src)-min($w_src,$h_src))/2),
    52.                           0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
    53.  
    54.          // вырезаем квадратную верхушку по y,
    55.          // если фото вертикальное (хотя можно тоже серединку)
    56.          if ($w_src<$h_src)
    57.          imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
    58.                           min($w_src,$h_src), min($w_src,$h_src));
    59.  
    60.          // квадратная картинка масштабируется без вырезок
    61.          if ($w_src==$h_src)
    62.          imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
    63.        
    64.  
    65. $date=time(); //вычисляем время в настоящий момент.
    66. imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.
    67.  
    68. //почему именно jpg? Он занимает очень мало места + уничтожается анимирование gif изображения, которое отвлекает пользователя. Не очень приятно читать его комментарий, когда краем глаза замечаешь какое-то движение.
    69.  
    70. $jpgpost = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.
    71.  
    72. $delfull = $path_to_90_directory.$filename;
    73. unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
    74. }
    75. else
    76.          {
    77.        //в случае несоответствия формата, выдаем соответствующее сообщение
    78.          
    79. exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>"); //останавливаем выполнение сценариев
    80.  
    81.         }
    82. //конец процесса загрузки и присвоения переменной $jpgpost адреса загруженной авы
    83. }
    84.     // подключаемся к базе
    85.     include ("php/bd.php");
    86. // сохраняем данные
    87.     $result2 = mysql_query ("INSERT INTO model (jpgpost) VALUES('$jpgpost')");
    88.     // Проверяем, есть ли ошибки
    89.     if ($result2=='TRUE')
    90.     {
    91.     echo "Данные успешно добавлены! <a href='n.php'>Добавить запись</a>";
    92.     }
    93. else {
    94.     echo "Ошибка! Данные не добавлены.";
    95.     }
    96.    
    97.     ?>
     
  4. zlatman

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

    С нами с:
    22 дек 2009
    Сообщения:
    11
    Симпатии:
    0
    УУУРРРААА нашел ошибку в форме которая отправляла данные была ошибка было вот так

    Код (Text):
    1. <form action="save_admin.php" method="post">
    а должно быть так...
    Код (Text):
    1. <form action="save_admin.php" method="post"enctype="multipart/form-data">
    так что приведенныей выше код рабочий ..
     
  5. [Alexander]

    [Alexander] Активный пользователь

    С нами с:
    29 мар 2010
    Сообщения:
    1
    Симпатии:
    0
    Как теперь вывести этот аватар в браузер?
     
  6. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Учите HTML
     
  7. thunderpick

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

    С нами с:
    10 апр 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Москва
    добавляй в базу (только название файла) и там где надо выводи. ещё лучше $path_to_90_directory.$типа_логин.$date.'.jpg' чтобы уж точно не было одинаковых названий.