Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Рисование копирайтов,нужна помощь мастеров...
 
 автор: nek-v   (23.04.2008 в 19:40)   письмо автору
 
 

Вот скрипт рисования копирайтов
<?php 
/

//заголовок 
header ("Content-type: image/png"); 

//оригинальное изображение (в данном случаи 128*97 
$img imagecreatefromjpeg("example.jpg"); 


/* 
*все координаты задаются от ВЕРХНЕГО ЛЕВОГО угла изображения (там 0.0) 
*/ 

//верхняя левая точка прямоугольника (все изображение в примере 128*97) 
$x1=50
$y1=5

//нижняя правая точка прямоугольника (все изображение в примере 128*97) 
$x2=125
$y2=20

//степень прозрачности прямоугольника 
$DARKNESS=100

//цвет прямоугольника 
$dark imagecolorallocatealpha($img000$DARKNESS); 

//рисуем прямоугольник 
imagefilledrectangle($img,$x1,$y1,$x2,$y2,$dark); 

//цвет надписи (белый) 
$white=imagecolorallocate($img,255,255,255); 

//координаты надписи (где-то в прямоугольнике ;) ) 
$x=55
$y=10

//рисуем надпись 
imagestring($img,1,$x,$y,"snippets.pp.ru",$white); 

//выводим и освобождаем память 
imagepng($img); 
imagedestroy($img); 


?>

Вопрос: Как можно таким делом обработать всю папку сразу?
Что переделать?
Скрипт не мой и умеет работать только с 1м файлом,а мне надо стоб всю папку сразу...
Помогите кто чем может...

   
 
 автор: sim5   (23.04.2008 в 19:52)   письмо автору
 
   для: nek-v   (23.04.2008 в 19:40)
 

Открывайте каждый файл и наносите, вы не можете применить GD-функцию сразу к нескольким файлам одновременно.

   
 
 автор: Alph[p]a   (23.04.2008 в 20:23)   письмо автору
 
   для: nek-v   (23.04.2008 в 19:40)
 

можно попробовать сделать из этого что нормальное...

<?php 

$dir
=opendir('img');
while (
$file=readdir ($dir))
{
    if (
$file!=='.' && $file!=='..')
    
image_copy ('img/'.$file);
}
closedir ($dir);

function 
image_copy($file)
{
//заголовок 
header ("Content-type: image/png"); 

//оригинальное изображение (в данном случаи 128*97 
$img imagecreatefromjpeg($file); 


/* 
*все координаты задаются от ВЕРХНЕГО ЛЕВОГО угла изображения (там 0.0) 
*/ 

//верхняя левая точка прямоугольника (все изображение в примере 128*97) 
$x1=50
$y1=5

//нижняя правая точка прямоугольника (все изображение в примере 128*97) 
$x2=125
$y2=20

//степень прозрачности прямоугольника 
$DARKNESS=100

//цвет прямоугольника 
$dark imagecolorallocatealpha($img000$DARKNESS); 

//рисуем прямоугольник 
imagefilledrectangle($img,$x1,$y1,$x2,$y2,$dark); 

//цвет надписи (белый) 
$white=imagecolorallocate($img,255,255,255); 

//координаты надписи (где-то в прямоугольнике ;) ) 
$x=55
$y=10

//рисуем надпись 
imagestring($img,1,$x,$y,"snippets.pp.ru",$white); 

//выводим и освобождаем память 
imagepng($img,rand(0,200).'.jpg'); 
imagedestroy($img); 

}

?> 

из папки img все картинки снабдилисиль нужной надписью и сохранились каталогом выше.

   
 
 автор: nek-v   (23.04.2008 в 22:44)   письмо автору
 
   для: Alph[p]a   (23.04.2008 в 20:23)
 

Спасибо!!! Работает!!! :)))) Большой респект тебе Alph[p]a
Теперь бы кто прикрутил к этому скрипту поле для ввода своего текста копирайта вообще супер бы было...

   
 
 автор: sim5   (23.04.2008 в 22:55)   письмо автору
 
   для: nek-v   (23.04.2008 в 22:44)
 

Попросите слесаря, он прикрутит. )) А что там прикручивать, так понимаю это вы (как админ) будете надписи наносить. Делайте форму с полем типа text, даете ей имя, например:

<form action="scriptname.php" method="post">
<input type="text" name="mark">
<input type="submit" value="Send">
</form>

Теперь получаете, после отправки, формы $_POST['mark'] и это значение передаете в качестве аргумента в функцию:

<?php  
$mark 
trim($_POST['mark']); //это ваша надпись, только добавить проверку ее получения надо
function image_copy($file,$mark//а тут передали ее в функцию 

//рисуем надпись  
imagestring($img,1,$x,$y,$mark,$white); //а вот вставили в картинку  


?>

   
 
 автор: nek-v   (23.04.2008 в 23:06)   письмо автору
 
   для: sim5   (23.04.2008 в 22:55)
 

Спасибо. Есть и еще вопросы но свет отключили а батарея на ноуте сдыхает.
Пока вопрос: как автоматизировать этот процесс? допустем юзер загружает картинку через форму (типа обменника) надо чтобы на все загружаемые файлы автоматом ставился копирайт.
Объясните сам принцип,а по возможности помогите кодом...
Вам вообще тогда цены не будет :-)))
на сегодня я Off, всем еще раз спасибо...

   
 
 автор: Drl31   (23.04.2008 в 23:13)   письмо автору
 
   для: nek-v   (23.04.2008 в 23:06)
 

Предлагаю такой алгоритм

все вновь загруженные картинки помещаются в папку dir1, на следующем этапе обрабатываешь эту папку вышеприведенным скриптом, обработанное изображение переносишь в рабочую папку dir2, из dir1 все удаляешь.

   
 
 автор: sim5   (23.04.2008 в 23:24)   письмо автору
 
   для: Drl31   (23.04.2008 в 23:13)
 

Зачем, что перед перемещением нельзя надпись добавить? Зачем перелопачивать папки?

   
 
 автор: sim5   (23.04.2008 в 23:23)   письмо автору
 
   для: nek-v   (23.04.2008 в 23:06)
 

Ну тогда, при получении изображения от юзера, перед помещением его в каталог, вызывайте эту функцию, а уж потом помещайте изображение с надписью в нужный каталог. Ну не юзер будут же определять надпись копирайта, потому форма для вас как админа, чтобы определить (константой в конфиге, записью в базе и т.п..) надпись вашего копирайта, вот это и надо передавать в функцию, а не то что получаете из формы.

   
 
 автор: nek-v   (24.04.2008 в 08:30)   письмо автору
 
   для: sim5   (23.04.2008 в 23:23)
 

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

   
 
 автор: ONYX   (24.04.2008 в 09:39)   письмо автору
 
   для: nek-v   (24.04.2008 в 08:30)
 

<?php  

if(is_uploaded_file($_FILES['file']['tmp_name'])){
copyRate($_FILES['file']);
}
function 
copyRate($file){
//заголовок  
header ("Content-type: image/png");  

//оригинальное изображение (в данном случаи 128*97  
$img imagecreatefromjpeg($file['tmp_name']);  
/*  
*все координаты задаются от ВЕРХНЕГО ЛЕВОГО угла изображения (там 0.0)  
*/  

//верхняя левая точка прямоугольника (все изображение в примере 128*97)  
$x1=50;  
$y1=5;  

//нижняя правая точка прямоугольника (все изображение в примере 128*97)  
$x2=125;  
$y2=20;  

//степень прозрачности прямоугольника  
$DARKNESS=100;  

//цвет прямоугольника  
$dark imagecolorallocatealpha($img000$DARKNESS);  

//рисуем прямоугольник  
imagefilledrectangle($img,$x1,$y1,$x2,$y2,$dark);  

//цвет надписи (белый)  
$white=imagecolorallocate($img,255,255,255);  

//координаты надписи (где-то в прямоугольнике ;) )  
$x=55;  
$y=10;  

//рисуем надпись  
imagestring($img,1,$x,$y,"snippets.pp.ru",$white);  
//---------------------------------------------
switch(strtolower($file['type'])){
  case 
"image/jpeg" $pictype=".jpg"; break;
  case 
"image/pjpeg"$pictype=".jpg"; break;
  case 
"image/gif"  $pictype=".gif"; break;
  case 
"image/png"  $pictype=".png"; break;
  case 
"image/x-png"$pictype=".png"; break;
  default           : 
$pictype=""; break;
}

$uniq=md5(uniqid(rand(),1));
$new=$uniq.$pictype;
//выводим и освобождаем память  
imagepng($img,$new);  
imagedestroy($img); 

?> 
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file"  name="file"/>
<input type="submit" value="Add" />
</form>

   
 
 автор: nek-v   (24.04.2008 в 10:42)   письмо автору
 
   для: ONYX   (24.04.2008 в 09:39)
 

ну чтож, попробуем...
Всем спасибо...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования