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 :: галерея и watermark

 PHP.SU

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


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

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



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Авг. 2010  
Откуда: Челны


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




Помогите не могу разобраться.
Мне необходимо в показать изображение в галереи с водяным знаком. Не могу разобраться и понять как сделать вызов функции на с определенным именем изображения?
Вот что у меня есть:
Вот вызов картинки в галереи:
PHP:
скопировать код в буфер обмена
  1. <a href="../img/<?=$row['photo']?>" class="gallery" rel="group">
  2. <img src="preview.php"></a>

$row['photo'] - это название изображения

Вот вызов watermark
PHP:
скопировать код в буфер обмена
  1.  
  2. $img = image_watermark((isset($_GET['image']))?$_GET['image']:"");
  3.  
PHP:
скопировать код в буфер обмена
  1. <a href="<?=$img?>" class="gallery" rel="group">
  2. <img src="preview.php"></a>


И сама функция
PHP:
скопировать код в буфер обмена
  1. function image_watermark ($img) {
  2. if (!empty($img)) {
  3. $image = $img;
  4.  
  5. $size_format = getimagesize($image);
  6. $format = strtolower(substr($size_formay['mime'], strpos($size_format['mime'], '/')+1));
  7.  
  8. header('content-type: image/'.$format.'');
  9.  
  10. // получаем имя изображения через GET
  11. $image = $_GET['image'];
  12.  
  13. // создаём водяной знак
  14. $watermark = imagecreatefrompng('watermark.png');    
  15.  
  16. // получаем значения высоты и ширины водяного знака
  17. $watermark_width = imagesx($watermark);
  18. $watermark_height = imagesy($watermark);  
  19.  
  20. // создаём jpg из оригинального изображения
  21. $image_path = $image;
  22. $image = imagecreatefromjpeg($image_path);
  23. //если что-то пойдёт не так
  24. if ($image === false) {
  25.     return false;
  26. }
  27. $size = getimagesize($image_path);
  28. // помещаем водяной знак на изображение
  29. $dest_x = (($size[0])/2) - (($watermark_width)/2);
  30. $dest_y = (($size[1])/2) - (($watermark_height)/2);
  31.  
  32. imagealphablending($image, true);
  33. imagealphablending($watermark, true);
  34. // создаём новое изображение
  35. imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
  36.  
  37. $imageformat = 'image'.$format;
  38. $imageformat($image);
  39.  
  40. // освобождаем память
  41. imagedestroy($image);
  42. imagedestroy($watermark);  
  43. }
  44. }
  45.  

В общем 2 + 2 сложить не получается(((
Заранее спасибо всем за ответы.


-----
Я только учусь...
 
 Top
Stierus Супермодератор
Отправлено: 02 Августа, 2012 - 10:15:27
Post Id



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


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


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




Что у тебя в $_GET['image'] ?
$image = imagecreatefromjpeg($image_path); - с чего ты решил, что там jpg?
 
My status
 Top
wredyatina
Отправлено: 02 Августа, 2012 - 10:33:42
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Авг. 2010  
Откуда: Челны


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




Вот я и не знаю как подать данные в $_GET['image'], чтобы передать функции изображение с именем и id, которое я выводила
PHP:
скопировать код в буфер обмена
  1. <a href="../img/<?=$row['photo']?>" class="gallery" rel="group">
  2. <img src="preview.php"></a>


Цитата:
$image = imagecreatefromjpeg($image_path); - с чего ты решил, что там jpg?


PHP:
скопировать код в буфер обмена
  1. function image_watermark ($img) {
  2. if (!empty($img)) {
  3. $image = $img;
  4.  
  5. $size_format = getimagesize($image);
  6. $format = strtolower(substr($size_formay['mime'], strpos($size_format['mime'], '/')+1));
  7.  
  8. header('content-type: image/'.$format.'');
  9.  
  10. // получаем имя изображения через GET
  11. $image = $_GET['image'];
  12.  
  13. // создаём водяной знак
  14. $watermark = imagecreatefrompng('watermark.png');    
  15.  
  16. // получаем значения высоты и ширины водяного знака
  17. $watermark_width = imagesx($watermark);
  18. $watermark_height = imagesy($watermark);  
  19.  
  20. // создаём jpg из оригинального изображения
  21. $image_path = $image;
  22.  
  23.  
  24. $imagecreatefrom = 'imagecreatefrom'.$format;
  25. $image = $imagecreatefrom($image_path);
  26.  
  27.  
  28. //если что-то пойдёт не так
  29. if ($image === false) {
  30.     return false;
  31. }
  32. $size = getimagesize($image_path);
  33. // помещаем водяной знак на изображение
  34. $dest_x = (($size[0])/2) - (($watermark_width)/2);
  35. $dest_y = (($size[1])/2) - (($watermark_height)/2);
  36.  
  37. imagealphablending($image, true);
  38. imagealphablending($watermark, true);
  39. // создаём новое изображение
  40. imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
  41.  
  42. $imageformat = 'image'.$format;
  43. $imageformat($image);
  44.  
  45. // освобождаем память
  46. imagedestroy($image);
  47. imagedestroy($watermark);  
  48. }
  49. }


-----
Я только учусь...
 
 Top
Stierus Супермодератор
Отправлено: 02 Августа, 2012 - 10:42:56
Post Id



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


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


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




Цитата:
Вот я и не знаю как подать данные в $_GET['image'], чтобы передать функции изображение с именем и id, которое я выводила
Я ничего не понял Улыбка

Цитата:
Мне необходимо в показать изображение в галереи с водяным знаком. Не могу разобраться и понять как сделать вызов функции на с определенным именем изображения?
Если у вас есть галерея - то вы при загрузке туда изображений должны делать копию с наложенным ватермарком.
 
My status
 Top
wredyatina
Отправлено: 02 Августа, 2012 - 11:11:55
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Авг. 2010  
Откуда: Челны


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




Я сделала вот так. Но у меня не работает с функцией, а переходит на ../img/
PHP:
скопировать код в буфер обмена
  1.           $nameimage = $row['photo'];
  2.       $img = image_watermark($nameimage);

PHP:
скопировать код в буфер обмена
  1. <a href="../img/<?=$img?>" target="_blank" rel="lightbox[roadtrip]"?>


PHP:
скопировать код в буфер обмена
  1. <? function image_watermark ($nameimage) {
  2.         global $img; global $nameimage;
  3. if (!empty($nameimage)) {
  4. $image = $nameimage;
  5.  
  6. $size_format = getimagesize($image);
  7. $format = strtolower(substr($size_formay['mime'], strpos($size_format['mime'], '/')+1));
  8.  
  9. header('content-type: image/'.$format.'');
  10.  
  11. // получаем имя изображения через GET
  12. $image = $_GET['image'];
  13.  
  14. // создаём водяной знак
  15. $watermark = imagecreatefrompng('watermark.png');    
  16.  
  17. // получаем значения высоты и ширины водяного знака
  18. $watermark_width = imagesx($watermark);
  19. $watermark_height = imagesy($watermark);  
  20.  
  21. // создаём jpg из оригинального изображения
  22. $image_path = $image;
  23. $image = imagecreatefromjpeg($image_path);
  24. //если что-то пойдёт не так
  25. if ($image === false) {
  26.     return false;
  27. }
  28. $size = getimagesize($image_path);
  29. // помещаем водяной знак на изображение
  30. $dest_x = (($size[0])/2) - (($watermark_width)/2);
  31. $dest_y = (($size[1])/2) - (($watermark_height)/2);
  32.  
  33. imagealphablending($image, true);
  34. imagealphablending($watermark, true);
  35. // создаём новое изображение
  36. imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
  37.  
  38. $imageformat = 'image'.$format;
  39. $imageformat($image);
  40.  
  41. // освобождаем память
  42. imagedestroy($image);
  43. imagedestroy($watermark);  
  44. }
  45. }
  46.  
  47. ?>


-----
Я только учусь...
 
 Top
Stierus Супермодератор
Отправлено: 02 Августа, 2012 - 11:16:09
Post Id



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


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


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




CODE (htmlphp):
скопировать код в буфер обмена
  1. $img = image_watermark($nameimage);
  2.  
  3. function image_watermark ($nameimage) {
  4. ...
  5. imagedestroy($watermark);  
  6. }
  7. }


$img - null, потому что функция ничего не возвращает
 
My status
 Top
wredyatina
Отправлено: 02 Августа, 2012 - 11:16:26
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Авг. 2010  
Откуда: Челны


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




Stierus пишет:
Если у вас есть галерея - то вы при загрузке туда изображений должны делать копию с наложенным ватермарком.


Дело в том, что у меня в галереи уже загружены фото без водяных знаков, и пере заливать эти изображения, с добавлением водяного знака это "мартышкин труд" на который уйдет уйма времени.
Хотелось бы связать два скрипта: чтобы уже имеющиеся изображения выводились в popup окне галереи с водяным знаком.
(Добавление)
Stierus пишет:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $img = image_watermark($nameimage);
  2.  
  3. function image_watermark ($nameimage) {
  4. ...
  5. imagedestroy($watermark);  
  6. }
  7. }


$img - null, потому что функция ничего не возвращает


А как мне сделать возврат изображения из функции с водяным знаком?


-----
Я только учусь...
 
 Top
Anguis
Отправлено: 02 Августа, 2012 - 11:24:41
Post Id



Частый гость


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


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




wredyatina, ну создавать ватремарк-имаджи по запросу не самая лучшая идея, потом использовать для этого GD - идея еще хуже. Попадется изображушка >3мб и сервер ваш ляжет с LA 200.
Мой вам совет - лучше сделайте скрипт, используя ту-же функцию image_watermark, который пробежится по всем файлам в вашем каталоге с изображениями и повесит на них ватермарк, и при аплоаде сделайте ватермарк. И будет шастье!

(Отредактировано автором: 02 Августа, 2012 - 11:26:26)

 
 Top
Stierus Супермодератор
Отправлено: 02 Августа, 2012 - 11:31:23
Post Id



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


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


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




в реалтайме накладывать ватермарки - идея не самая удачная. если она вам сильно нравится - то вам нужен отдельный скрипт, который будет показывать картинку - showImg.php - там содержимое вашей функции

Второй скрипт галереи выводит что-то вроде

<a href="../showImg.php?img=<?=$imgId?>" target="_blank" rel="lightbox[roadtrip]"?>



Я бы сделал скрипт, который 1 раз посмотрит в вашу папку с картинками и в цикле для каждой из них создаст копию + все следующие загруженные будут сразу генерировать копию с ватермарком.
 
My status
 Top
Anguis
Отправлено: 02 Августа, 2012 - 11:35:23
Post Id



Частый гость


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


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





Stierus, такое называется - у дураков мысли сходятся, всмысле правильный стиль программирования Радость
 
 Top
wredyatina
Отправлено: 02 Августа, 2012 - 12:04:34
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Авг. 2010  
Откуда: Челны


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




Stierus пишет:
в реалтайме накладывать ватермарки - идея не самая удачная. если она вам сильно нравится - то вам нужен отдельный скрипт, который будет показывать картинку - showImg.php - там содержимое вашей функции

Второй скрипт галереи выводит что-то вроде

<a href="../showImg.php?img=<?=$imgId?>" target="_blank" rel="lightbox[roadtrip]"?>



Я бы сделал скрипт, который 1 раз посмотрит в вашу папку с картинками и в цикле для каждой из них создаст копию + все следующие загруженные будут сразу генерировать копию с ватермарком.


Я делала так сразу еще до того как обратиться сюда за помощью, открывает в новом окне без js галереи.


-----
Я только учусь...
 
 Top
Stierus Супермодератор
Отправлено: 02 Августа, 2012 - 12:11:37
Post Id



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


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


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




Это уже вопрос к JS
 
My status
 Top
wredyatina
Отправлено: 02 Августа, 2012 - 13:07:14
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Авг. 2010  
Откуда: Челны


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




Пыталась, пыталась сделать через php.... вчера ушло пару часов, и сегодня пол дня и не получилось(. Сделала через htaccess за 5 минут.............


-----
Я только учусь...
 
 Top
Stierus Супермодератор
Отправлено: 02 Августа, 2012 - 14:11:37
Post Id



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


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


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




Всемогучий htaccess научился еще и ватермарки на картинки накладывать? мощь Улыбка
 
My status
 Top
wredyatina
Отправлено: 02 Августа, 2012 - 14:14:36
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Авг. 2010  
Откуда: Челны


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




точно)
(Добавление)
Stierus, спасибо огромное за внимание и ответы.

(Отредактировано автором: 02 Августа, 2012 - 14:22:01)



-----
Я только учусь...
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB