|
|
|
| Скрипт добавления водяного знака на картинку:
<?
$image = imagecreatefromjpeg('image.jpg');
$watermark = imagecreatefrompng('watermark.png');
$image_watermark = create_watermark($image, $watermark, 'right', 30);
header('Content-Type: image/jpeg');
imagejpeg($image_watermark);
functiоn create_watermark( $image, $watermark, $positiоn = 'right', $alpha_level = 100 ) ;
{
// ширина и высота водяного знака
$width = imagesx($watermark);
$height = imagesy($watermark);
if ( $positiоn == 'right' ) { // водяной знак будет внизу справа
$dest_x = imagesx($image) - $width - 5;
$dest_y = imagesy($image) - $height - 5;
} else { // водяной знак будет по центру
$dest_x = intval(imagesx($image)*0.5) - intval($width*0.5);
$dest_y = intval(imagesy($image)*0.5) - intval($height*0.5);
}
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $width, $height, $alpha_level);
return $image;
}
?>
Есть папка, в ней около 300 картинок. Как добавить водяной знак на все сразу ? Этот скрипт добавляет только на картинку image.jpg. | |
|
|
|
|
|
|
|
для: volodumir
(14.10.2010 в 20:51)
| | На все сразу никак, да и добавлять надо при загрузке файлов, если уж делать это, а не потом. | |
|
|
|
|
|
|
|
для: sim5
(14.10.2010 в 20:55)
| | Как это никак? | |
|
|
|
|
|
|
|
для: Gubichev
(14.10.2010 в 21:05)
| | Вы хотите сказать, что GD будет обрабатывать одновременно 300 изображений? | |
|
|
|
|
|
|
|
для: sim5
(14.10.2010 в 21:25)
| | Одновременно не знаю а циклом будет. Мне кажется автору именно это и нужно - за один запуск "пометить" все картинки. | |
|
|
|
|
|
|
|
для: Gubichev
(14.10.2010 в 21:37)
| | Вы правильно поняли, как это сделать? | |
|
|
|
|
|
|
|
для: volodumir
(14.10.2010 в 23:48)
| | Пройтись по каталогу, отдавая последовательно каждое изображение в функцию добавления логотипа. Удобнее это сдлеать функцтей glob(), но.... Код приведенный накладывает логотипы только временно, при каждой выдаче изображения в браузер, что уже накладно, а увас 300 изображений. Неуж-то пользователь будет терпеть загрузку такого большого объема?
Что касается непосредственно кода - кто его писал?
1. Слово function пишется строго английским, у вас литера "о" в нем русская. Эта же ошибка у вас в объявленной переменной $positiоn.
2. После скобок с аргументами функции ставится открывающая фигурная скобка, а не точка с запятой.
3. Открытие изображений нужно перенести в функцию, передавая ей имя, и после окончания работы функции высвобождать их дескрипторы, тем более в вашем случае. Функция же должна и отдавать результат работы в браузер, ничего не возвращая.
4. У фунции imagecopymerge() несколько иные задачи, а вам нужна imagecopy().
5. В браузер отдавать теги изображений, которые должны обращаться к этому скрипту.
Если у вас не галерея предполагающая выдачу изображений пользователю без логотипа, то наложение его лучше перенести в операцию загрузки изображений. Этим вы исключите нагрузку на сервер, и уменьшите время ожидания пользователя. | |
|
|
|
|
|
|
|
для: sim5
(15.10.2010 в 04:54)
| | Я только недавно подключил скрипт водяного знака к сайту, он используется при загрузке картинок на сервер. Проблема в том что ранее загружанные картинки без водяного знака (~300 шт.). Эти ранее загруженные картинки лежат в отдельной папке. Мне нужно переделать этот скрипт чтобы он выбрал по-очереди каждую картинку из этой папки, добавил водяной знак и перезаписал ее. Может есть альтернативный какой-то метод?
А нащет ошибок не знаю, он у меня прекрасно работает. | |
|
|
|
|
|
|
|
для: volodumir
(15.10.2010 в 16:36)
| | >А нащет ошибок не знаю, он у меня прекрасно работает.
<?
//вот это будет работать
$имя = "Значение";
echo $имя;
//и это будет работать
function имяФункции($v) {
echo $v;
}
имяФункции(12);
//если функция объявляется как ей и положено
//замените в бъявлении английское о на русское о
//теперь работает?
|
Насчет - не поэтому ли работает?
Собственно достачто вместо вывода в браузер записывать файл на диск, вот и вся переделка. Для этого функции imagejpeg($image_watermark) добавить путь, имя файла, компрессия. Передачу заголовка удалить. | |
|
|
|
|
|
|
|
для: Gubichev
(14.10.2010 в 21:37)
| | А циклом это сразу всем? И ежу известно, что все операции происходят последовательно, и работа с изображениями не исключение. | |
|
|
|
|
|
|
|
для: sim5
(15.10.2010 в 04:12)
| | По мне да, циклом это сразу всем, т.е. скрипт запускаем только раз. | |
|
|
|
|
|
|
|
для: Gubichev
(15.10.2010 в 15:57)
| | Значит ваши циклы эксклюзивные. | |
|
|
|