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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: когда пишем что-то при загрузке на фотографии, шрифт где должен быть установлен?

Сообщения:  [1-10]   [11-18] 

 
 автор: Trianon   (21.03.2009 в 16:25)   письмо автору
 
   для: elenaki   (21.03.2009 в 15:23)
 

ну да.
создавать цвет нужно в контексте целевой картинки, а не исходной. Я не заметил.

  Ответить  
 
 автор: sim5   (21.03.2009 в 15:32)   письмо автору
 
   для: elenaki   (21.03.2009 в 15:23)
 

Да, вы определили палитру для ресурса, и тут же удалили его.

  Ответить  
 
 автор: elenaki   (21.03.2009 в 15:23)   письмо автору
 
   для: Trianon   (21.03.2009 в 13:17)
 

ааааааа! теперь шрифт стал черный!!!!! был белый! ничего ведь не меняла! в команде
$color = imagecolorallocatealpha($src_img, 255, 255, 255, 30); 

все три 255 - это ведь и есть БЕЛЫЙ цвет? а 30 - это прозрачность? что за засада?
не рано ли мы сделали imagedestroy($src_img); - ведь цвет берется из него строчкой ниже...


отбой. поставила в выборе цвета другое имя... теперь белый. по крайней мере с моего
компа грузит 800Кб-е фотки (а если больше, уже хостер ругается, запрос отвергнут, говорит).

  Ответить  
 
 автор: Trianon   (21.03.2009 в 13:17)   письмо автору
 
   для: elenaki   (21.03.2009 в 12:21)
 

чтобы рационально расходовать память, нужно поменять порядок формирования изображений.
К примеру, при размерах загружаемой картинки 1024*768 ,
для $src_img потребуется памяти около 3840 Кб
для $dst_img - около 1068 Кб
для $dst_img1 - около 60 Кб
последнее - мелочь, а первое запросто может привести к тому, что загрузить шрифт и выполнить надпись не получится.

А можно сделать так:

$src_img=imagecreatefromjpeg($_FILES['photos']['tmp_name']); // захватили 3840 Кб
$dst_img1=imagecreatetruecolor($size2, $size3);
imagecopyresampled($dst_img1, $src_img, 0, 0, 0, 0, $size2, $size3, $size[0], $size[1]);
imagejpeg($dst_img1, "../../photos/s_".$_FILES['photos']['name'], 90);
imagedestroy($dst_img1); // поскольку более ничего с ним мы не делаем. 60Кб освободили 


$dst_img=imagecreatetruecolor($size0, $size1); // захватили еще 1068 Кб
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $size0, $size1, $size[0], $size[1]);
imagedestroy($src_img); // освободили исходное изображение - 3840 Кб


$color = imagecolorallocatealpha($src_img, 255, 255, 255, 0);
$x = intval(($size0/2) - 200);
$y = intval($size1/2);
// на свободной памяти подгружаем шрифт, делаем надпись. 
$box = imagettftext($dst_img, 26, 0, $x, $y, $color, "SPROKETF.TTF", "text na fotke");

imagejpeg($dst_img, "../../photos/".$_FILES['photos']['name'], 90);
imagedestroy($dst_img); // освобождаем память

  Ответить  
 
 автор: elenaki   (21.03.2009 в 13:08)   письмо автору
 
   для: sim5   (21.03.2009 в 12:30)
 

так я и мысли не допускала, что они по 10Мб соберутся грузить... и я не знала, что GD не
успеет нарисовать то, что должна... а если поставить проверку, то большие фотки не будут
грузиться вообще, и клиент будет ворчать, т.к. уменьшить их он тоже не сможет. а если
делать надпись не GD, т.е. не рисовать ее на фотке, а наклеивать поверх другую, прозрачную,
маленькую картинку с надписью? это прокатит при больших размерах загружаемых фоток?

  Ответить  
 
 автор: sim5   (21.03.2009 в 12:30)   письмо автору
 
   для: elenaki   (21.03.2009 в 12:21)
 

У вас собственно на недопустимый размер как раз нет проверки.

  Ответить  
 
 автор: sim5   (21.03.2009 в 12:24)   письмо автору
 
   для: Trianon   (21.03.2009 в 11:45)
 

Ну я о чем? :)

  Ответить  
 
 автор: elenaki   (21.03.2009 в 12:21)   письмо автору
 
   для: Valick   (21.03.2009 в 10:49)
 

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


if ($_FILES['photos']['tmp_name'] != "") {
$size = getimagesize($_FILES['photos']['tmp_name']);

if ($size[0]>=$size[1])
{
    $size0=540;
    $size1=540/$size[0]*$size[1];
    $size2=130;
    $size3=130/$size[0]*$size[1];
}
else
{
    $size1=540;
    $size0=540/$size[1]*$size[0];
    $size3=130;
    $size2=130/$size[1]*$size[0];
}

$src_img=imagecreatefromjpeg($_FILES['photos']['tmp_name']);
$dst_img=imagecreatetruecolor($size0, $size1);
$dst_img1=imagecreatetruecolor($size2, $size3);
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $size0, $size1, $size[0], $size[1]);
imagecopyresampled($dst_img1, $src_img, 0, 0, 0, 0, $size2, $size3, $size[0], $size[1]);


$color = imagecolorallocatealpha($src_img, 255, 255, 255, 0);
$x = intval(($size0/2) - 200);
$y = intval($size1/2);
$box = imagettftext($dst_img, 26, 0, $x, $y, $color, "SPROKETF.TTF", "text na fotke");

imagejpeg($dst_img, "../../photos/".$_FILES['photos']['name'], 90);
imagejpeg($dst_img1, "../../photos/s_".$_FILES['photos']['name'], 90);
imagedestroy($src_img);
imagedestroy($dst_img);
imagedestroy($dst_img1);
}//==================== end of upload photo

  Ответить  
 
 автор: Trianon   (21.03.2009 в 11:45)   письмо автору
 
   для: sim5   (21.03.2009 в 10:28)
 

Нужно смотреть код.
Если скрипт построен так, что сперва сохраняет изображение по целевому пути без водяного знака, а затем открывает его в GDLIB, ставит знак и сохраняет по тому же самому пути, то происходящее вполне объяснимо.
Любая исключительная ситуация на стадии работы GDLIB (нехватка памяти, к примеру) приведет к тому, что изображение останется загруженным без водяного знака.

  Ответить  
 
 автор: Valick   (21.03.2009 в 10:49)   письмо автору
 
   для: elenaki   (21.03.2009 в 10:18)
 

Вы бы код показали, на всяк случай)

  Ответить  

Сообщения:  [1-10]   [11-18] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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