Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Наложение водяного знака

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Ammiak
Отправлено: 04 Августа, 2012 - 21:02:49
Post Id


Частый гость


Покинул форум
Сообщений всего: 232
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Здравствуйте, возник такой вопрос: накладываю водяной знак на изображение. Проблема в том что выходное изображение представляет собой просто чёрный фон. Вот код:
PHP:
скопировать код в буфер обмена
  1.  
  2. <form method="post" enctype="multipart/form-data" >
  3. <input type="file" name="filename" id="filename"/><input type="hidden" id="max_size" name="max_size" value="<?PHP echo ini_get('upload_max_filesize'); ?>" />
  4. <input type="submit" name="image_subm" id="image_subm" value="Ok" />
  5. </form>
  6.  
  7. <?PHP
  8. if ($_POST['image_subm']) {
  9. if (is_uploaded_file($_FILES['filename']['tmp_name']) && isset($_POST['image_subm'], $_FILES['filename']['name'], $_FILES['filename']['size'])) {
  10.  
  11. $_FILES['filename']['size']=round($_FILES['filename']['size']/1024, 1);
  12. if ($_POST['max_size']>$_FILES['filename']['size']) {
  13.  
  14. $file_types=array('image/jpg', 'image/jpeg', 'image/gif', 'image/png');
  15. if (!in_array($_FILES['filename']['type'], $file_types, 1)) {echo 'Недопустимый формат файла';}
  16.  
  17.  
  18. if (move_uploaded_file($_FILES['filename']['tmp_name'], 'images/'.$_FILES['filename']['name'])) {
  19.  
  20. /*
  21. получаем размеры загружаемого изображения
  22. */
  23. list ($width,$height)=getimagesize('images/'.$_FILES['filename']['name']);
  24.  
  25. /*
  26. устанавливаем размеры нового изображения
  27. */
  28. $new_width=600;
  29. $new_height=450;
  30.  
  31. /*
  32. создаём новое изображение и накладываем на него загружаемое изображение
  33. */
  34. imagecreatetruecolor($new_width, $new_height),
  35. imagecreatefromjpeg('images/'.$_FILES['filename']['name']),
  36. 0,
  37. 0,
  38. 0,
  39. 0,
  40. $new_width,
  41. $new_height,
  42. $width,
  43. $height
  44. );
  45.  
  46. /*
  47. получаем размеры водяного знака и накладываем водяной знак
  48. */
  49. list ($w_watermark,$h_watermark)=getimagesize('images/watermark.png');
  50.  
  51. imagecreatetruecolor($new_width, $new_height),
  52. imagecreatefrompng('images/watermark.png'),
  53. $new_width-$w_watermark,
  54. $new_width-$h_watermark,
  55. 0,
  56. 0,
  57. $w_watermark,
  58. $h_watermark
  59. );
  60.  
  61. /*
  62. сохраняем новое изображение
  63. */
  64. imagecreatetruecolor($new_width, $new_height),
  65. 'images/watermark_'.$_FILES['filename']['name'], 100
  66. );
  67.  
  68. echo '<img src="images/watermark_'.$_FILES['filename']['name'].'" />';
  69.  
  70. }
  71.  
  72. else {echo 'Ошибка загрузки файла';}
  73. }
  74. else {echo 'Размер файла слишком большой';}
  75. }
  76. else echo 'Ошибка загрузки файла';
  77. }
  78. else echo '';  
  79. ?>
  80.  

Подскажите пожалуйста что здесь нужно исправить?

(Отредактировано автором: 04 Августа, 2012 - 21:04:03)

 
 Top
Stierus Супермодератор
Отправлено: 06 Августа, 2012 - 12:01:38
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Даже если вы не разбираетесь совершенно в php, попробуйте включить мозг:

1 сначала вы закачиваете картинку
2 потом вы изменяете ее размер
3 потом вы создаете новую пустую картинку, размером "размер картинки - размер водяного знака", что само по себе странно
4 Тут вообще полное безумие, вы сохраняете изображение, которое пытаетесь создать, причем создать., используя адрес временного файла, который уже перезалили в другое место с другими размерами о_О

5 нажав на описание ф-и imagejpeg, вы увидели бы описание " imagejpeg - выводит изображение в браузер или файл" ... вы без заголовка выводите картинку в браузер, а потом делаете
echo '<img src="images/watermark_'.$_FILES['filename']['name'].'" />';


Тут все неправильно начиная от середины и до конца. Что делать? удалить это и написать нормально
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Графика в PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB