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]   

> Описание: наложение ватемарка
broshurkaplus
Отправлено: 25 Января, 2011 - 11:49:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


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




памагите если возможно:
есть скрипт который загружает файл картинки на сервер.
всё работает, но мне нужно наложить ватемарк
пробую так: загружаю файл на сервер, сохраняю, создаю новую картинку по размерам загрузки, копирую внеё загруженый файл, создаю новую картинку из файла ватемарка, копирую её часть в новую картинку, сохраняю на сервере под другим именем.
НЕ НАКЛАДЫВАЕТ !!! хотя файл новый создаётся!
в папке куда загружается права максимальны. может чтото с правами не так? и мне надо чтобы грузилось в другую папку.
подскажите пожалста
привожу кусок кода

PHP:
скопировать код в буфер обмена
  1. ...
  2.                  //Перемещаем загруженный файл в необходимую папку $url
  3. //НУЖНО ЧТОБЫ ПЕРЕМЕЩАЛО КАК В СЛЕДУЮЩЕЙ СТРОКЕ В ДРУГУЮ ПАПКУ
  4.                //  if(move_uploaded_file($FILE['FILE']['tmp_name'], $url."/"$newname)) {
  5. //ХОТЯ ПОКА ПРОБУЮ В ПАПКУ ОТКУДА СКРИПТ
  6. if(move_uploaded_file($FILE['FILE']['tmp_name'], $newname)) {
  7. //накладываем ватемарк
  8. $filename_watermark = 'watermark.png';
  9. $bb="123".$newname;
  10. $aaa=$newname;
  11. $imgsource = imagecreatefromjpeg($aaa);
  12.   $src_w = imagesx($imgsource);
  13.   $src_h = imagesy($imgsource);
  14. $imgdest = imagecreatetruecolor($src_w, $src_h);
  15. imagecopyresampled($imgdest, $imgsource, 0, 0, 0, 0, $src_w, $src_h, $src_w, $src_h);
  16. $imgadd = imagecreatefrompng($filename_watermark);
  17. imagecopy($imgdest, $imgadd, 0, 0, 0, 0, imagesx($imgadd), imagesy($imgadd));
  18. imagejpeg($imgdest, $bb, 90);
  19. if (! file_exists ($bb)) {
  20. die("файла нет ".$bb);}
  21.  // Чистим мусор
  22.   imagedestroy($imgadd);
  23.   imagedestroy($imgdest);
  24.   imagedestroy($imgsource);
  25.                     //Выводим сообщение что файл обработа и загружен
  26.                     return TRUE;
  27.                                                                                                            }



ну так памагите или укажите путь истинный


Отредактировано модератором: JustUserR, 25 Января, 2011 - 15:57:28
Обрамил PHP-код в соответствующий BB-тег
 
 Top
Uchkuma
Отправлено: 25 Января, 2011 - 12:35:15
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




Как минимум массив с данными по загруженным файлам находится здесь $_FILES, а не здесь $FILE.
И оформляйте код!
 
 Top
broshurkaplus
Отправлено: 25 Января, 2011 - 12:46:38
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


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




Uchkuma

я php 1 мксяц а Вы видно меньше ,я же описал что работает
ведь я полагаю раз

echo 'Выберите файл (не более 1мб): <input type="file" name="FILE" size="20" />&nbsp;&nbsp;';

то и массиф
$_FILE а не $FILES.

у меня всё работает
ПО ДЕЛУ ПРО НАЛОЖЕНИЕ ЧТО НИТЬ ЕСТЬ ? ГДЕ ОШИБКА В НАЛОЖЕНИИ?
ВЕДЬ У МЕНЯ ВСЁ ГРУЗИТ И СОЗДАЁТ НО БЕЗ ВАТЕМАРКА!!!
 
 Top
Uchkuma
Отправлено: 25 Января, 2011 - 12:53:12
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




broshurkaplus пишет:
php 1 мксяц а Вы видно меньше
Спасибо, желание помогать вам отпало. Почитайте http://php.su/phphttp/?uploads .
 
 Top
SAD
Отправлено: 25 Января, 2011 - 13:01:39
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




broshurkaplus пишет:
у меня всё работает
ПО ДЕЛУ ПРО НАЛОЖЕНИЕ ЧТО НИТЬ ЕСТЬ ? ГДЕ ОШИБКА В НАЛОЖЕНИИ?
ВЕДЬ У МЕНЯ ВСЁ ГРУЗИТ И СОЗДАЁТ НО БЕЗ ВАТЕМАРКА!!!

наглый еще оказывается - получишь штраф или бан

(Отредактировано автором: 25 Января, 2011 - 13:02:36)

 
 Top
broshurkaplus
Отправлено: 25 Января, 2011 - 13:20:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


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




чего Вы злитесь и обижаетесь
забанить можно всё что угодно
ведь цель форума ПОМОГАТЬ И ОБЪЯСНЯТЬ друг другу
я ведь описал задачу и то что где работает и где не работает

отписал тока щас, читал ссылку и проверял указанный недостаток ставил из массивов
$_FILES['FILE']['tmp_name'] и $FILE['FILE']['tmp_name'] вроде скрипт всё равно загружает картинки, но не выполняет задачу, объясните ЗЕЛЁНОМУ
в чём разница , и почему работает в обоих случаях...

ведь основной вопрос в другом: где ошибка в коде при наложении ватемарка ?
или всё неправильно? укажите на путь истинный . я уже читал много инета , бьюсь 7й день,
но везде немного не то, нужно чтобы накладывало именно при загрузке...
 
 Top
JustUserR
Отправлено: 25 Января, 2011 - 15:59:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




broshurkaplus пишет:
$_FILES['FILE']['tmp_name'] и $FILE['FILE']['tmp_name'] вроде скрипт всё равно загружает картинки, но не выполняет задачу, объясните ЗЕЛЁНОМУ
Использование PHP-интерпретатора предполагает автоматизированное осуществление загрузки передаваемых браузером пользователя файлов во временную директорию - при этом данный процесс осуществляется до начала исполнения основного потока программного кода и не контролируется текущим PHP-приложением


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
broshurkaplus
Отправлено: 25 Января, 2011 - 19:08:21
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


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




я панимаю что процесс автоматически загружает файлы пользователей ...,
я сделал проверку есть ли файл, переместил его в каталог куда нужно,
далее делаю ватемарк ----- НО ОН НЕ НАКЛАДЫВАЕТСЯ хотя файлы и создаются.
я уже описывал выше...

у меня ВАТЕМАРК не накладывается, что описано в первом посте
подскажите в чём дело, где ошибка , или кака можно реализовать данную задачу подругому - по делу темы , по сути вопроса.
если это возможно?!
 
 Top
Invert
Отправлено: 27 Января, 2011 - 04:53:19
Post Id



Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Нояб. 2010  


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




Про ImageMagic писать? =)
 
 Top
Zuldek
Отправлено: 27 Января, 2011 - 07:35:34
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


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




Если вы работаете с удалённым сервером, то проверьте физическое наличие создаваемого результирующего файла в указанной директории, а также время создания файла. Если файла там не будет, а так скорее всего и есть, смотрите лог сервера.
Цитата:
$newnameUchkuma
я php 1 мксяц а Вы видно меньше ,я же описал что работает
ведь я полагаю раз
<input type="file" name="FILE" size="20" />&nbsp;&nbsp;';
то и массиф
$_FILE а не $FILES.

Дочитал. Массив с данными по загруженным файлам тут $_FILES.
Цитата:
то и массиф
$_FILE а не $FILES
- Бред.
Цитата:
я php 1 мксяц а Вы видно меньше
После таких сообщений помощь автору темы на этом форуме обычно заканчивается. Моя, во всяком случае, точно.
 
 Top
JustUserR
Отправлено: 27 Января, 2011 - 09:47:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




broshurkaplus Возможной причиной осуществления некорректного функционирования предплагаемого PHP-приложения может являться использование некорретных базовых файловых путей обеспечивающих параметр сохранения целевого файла - значения которого может варьироваться в зависимости от системного окружения и конфигурации PHP-интерпретатора а также расположения целевого приложения - в качестве возможного варианта решения в таком случае допустимо использование абсолютного пути генерируемого на основе переменной окружения DOCUMENT_ROOT
Кроме того при осуществлении просмотра целевого объекта изображения в браузере может иметь место отображение устаревшей версии графического файла - связанного с механизмом кеширования


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
broshurkaplus
Отправлено: 27 Января, 2011 - 19:49:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


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




Invert
Про ImageMagic писать?
если возможно напишите, я пока неопытный, и что это не знаю, хотя полагаю что это при выводе уже готового изображения.

Zuldek
Цитата:
Если вы работаете с удалённым сервером, то проверьте физическое наличие создаваемого результирующего файла в указанной директории, а также время создания файла. Если файла там не будет, а так скорее всего и есть, смотрите лог сервера.


файл есть он грузиться на сервер см пост 1
яж полагаю что
CODE (htmlphp):
скопировать код в буфер обмена
  1. [PHP]if(move_uploaded_file($_FILES['FILE']['tmp_name'], $newname)) {[/PHP]


здесь - если файл переместился и сохранился под указаным именем, что и происхотит (у меня фактически), то далее обрабатывается мой код ватемарка из поста 1 внутри функции, которая возвращает true. Возможно я не туда всталяю фун.наложения?и её нужно использовать позже , после возвращения true.



приведу кусок скрипта с комментариями что где работает а где нет, чтобы видно было в контексте
отсюда вызываем
...
PHP:
скопировать код в буфер обмена
  1.      if(uploadfile($url,$_FILES)!== FALSE) {
  2. //сдесь вставляем в базу - это работает
  3.           $q5 ="INSERT INTO gallery VALUES ('".$_POST[new_name]."','".$_POST['desc']."','".date("d-m-Y")."')";  
  4. //тк работает, то выводит страницу
  5.           if(@mysql_query($q5)) {
  6.           header("location:admin.php");     }}
  7.                  else {echo 'Ошибка <br/>';}
  8.                    }

...
далее функция, может чтото неправильно и Вам смешно, но я её и так уже повсякому кручу верчу
PHP:
скопировать код в буфер обмена
  1. function uploadfile($url,$FILE) {
  2.       //Проверяем, существует ли имя. -сдесь работает
  3. if($FILE['FILE']['name']){
  4.     //Проверяем размер файла-сдесь работает
  5.     if($FILE['FILE']['size'] != 0 AND $FILE['FILE']['size']<=1024000) {
  6.         //Проверяем загрузился ли файл на сервер-сдесь работает
  7.         if(is_uploaded_file($_FILES['FILE']['tmp_name'])) {
  8. $newname=$_POST[new_name];
  9.  
  10. // проверяем тип файла-сдесь работает
  11. if(!function_exists(getimagesize)){die("getimagesize() required.");}
  12. $file_types = array("image/jpeg" => "jpg","image/pjpeg" => "jpg","image/gif" => "gif","image/png" => "png",);
  13. $width=null;
  14. $img_info = getimagesize($_FILES['FILE']['tmp_name']);
  15. $img_type = $img_info["mime"];
  16. list($width, $height, $t, $attr)=$img_info;
  17. if(!$file_types[$img_type]) {
  18. die("Просим прощения, но картинка должна быть в jpeg, jpg, gif или png формате. Пожалуйста, попробуйте ещё раз.");
  19. }
  20. else
  21. {$file_suffix=$file_types[$img_type];}
  22.  
  23.                  //Перемещаем загруженный файл в необходимую папку $url
  24.                //  if(move_uploaded_file($_FILES['FILE']['tmp_name'], $url."/"$newname)) {
  25. if(move_uploaded_file($_FILES['FILE']['tmp_name'], $newname)) {
  26. //-сдесь работает
  27. //накладываем ватемарк
  28. $filename_watermark = 'watermark.png';
  29. $bb="123".$newname;
  30. $aaa=$newname ;
  31. $imgsource = imagecreatefromjpeg($aaa);//-сдесь работает
  32.   $src_w = imagesx($imgsource);
  33.   $src_h = imagesy($imgsource);
  34. $imgdest = imagecreatetruecolor($src_w, $src_h);//-сдесь работает
  35. imagecopyresampled($imgdest, $imgsource, 0, 0, 0, 0, $src_w, $src_h, $src_w, $src_h);//-сдесь работает
  36. $imgadd = imagecreatefrompng($filename_watermark);//-сдесь работает
  37. imagecopy($imgdest, $imgadd, 0, 0, 0, 0, imagesx($imgadd), imagesy($imgadd));// сдесь не вставляет
  38. imagejpeg($imgdest, $bb, 90);//-сдесь работает
  39.  
  40. if (! file_exists ($bb)) {die("файла нет ".$bb);}
  41.  // Чистим мусор
  42.   imagedestroy($imgadd);
  43.   imagedestroy($imgdest);
  44.   imagedestroy($imgsource);
  45.  
  46.                     //Выводим сообщение что файл обработа и загружен--сдесь работаети выполняетсяся вставка б базу...
  47.                     return TRUE;
  48.                                                                                                            }
  49.             else { return 'Произошла ошибка при перемещении файла в папку'.$url;}
  50.  
  51.                                                                               }
  52.         else {return 'Прозошла ошибка при загрузке файла на сервер';}
  53.  
  54.                                                         }
  55.     else { return 'Размер файла не должен превышать 100Кб';}
  56.                              }
  57.  
  58. else { return 'Файл должен иметь название';}
  59.  
  60.     }
  61. ?>



полагаю что не доконца работает сдесь
$imgadd = imagecreatefrompng($filename_watermark );
или совсем не работает сдесь
imagecopy($imgdest, $imgadd, 0, 0, 0, 0, imagesx($imgadd), imagesy($imgadd));

или в правах дело
файлы $newname и $bb создаются на сервере с правами rw- r-- r--
и когда я проверяю на их сервере то права не подсвечиваются - не подлежат изменению
ИТОГ
ошибка скорей сего в правах
или
переместить ф.наложения ватемарка после возвр true

вот как то так подскажите кто что может.

простите если код смешной просто кручу верчу его уже очень долкго
(Добавление)
да и полагаю сто
$_FILES,массив с данными по загруженным файлам
$FILE - до отправки -?
 
 Top
broshurkaplus
Отправлено: 28 Января, 2011 - 22:15:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


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




ВСЁ !!! разобрался - всё работает, просто изначально в файле ватемарка не наложил фон в фотошопе (белый фон и надпись). так что это рабочий скрипт только остаётся вставить имя файла под себя.
 
 Top
JustUserR
Отправлено: 29 Января, 2011 - 17:07:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




broshurkaplus пишет:
Всё работает, просто изначально в файле ватемарка не наложил фон в фотошопе (белый фон и надпись
В качестве возможного варианта позволяющего осуществить проверку предполагаемого PHP-приложения на предмет функционирования системы добавления watermark-элемента - допустимо произвести сравнение времени последней модификации а также контрольной суммы байт целевого файлового элемента


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 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