Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Automatyczne nanoszenie napisow na obrazki
Forum PHP.pl > Forum > PHP
Bojakki
Chialem sie zapytac czy da sie zrobic cos takiego, by do kazdego wysylanego (przez formularz na stronie) obrazka na serwer automatycznie sie dodawal napis, np. z adresem strony. Sam napis mialby byc bardzo prosty, biala czcionka na czarnym prostokaciku umieszczony gdzies tam w prawym dolnym rogu.
Adiasz
Bez problemu, Image Functions
Bojakki
Wszystko fajnie, poszedlem nawet na latwizne i znalazlem taki kod:
  1. <?php 
  2.  
  3. $znaczek = "images/znak.gif"; 
  4. $pozycja = "tl"; // lewy górny róg 
  5. $pozycja = "tr"; // prawy górny róg 
  6. $pozycja = "bl"; // lewy dolny róg 
  7. $pozycja = "br"; // prawy dolny róg 
  8.  
  9. function znaczek($plik,$pozycja) 
  10. { 
  11. global $znaczek; 
  12.  
  13. $image1 = imagecreatefromgif( $znaczek ); // importujemy plik gif ze znakiem 
  14. $image2 = imagecreatefromjpeg( $plik ); // otwieramy plik jpg, na którym ma być naklejony znaczek 
  15. $plik_w = imagesx( $image2 ); // szerokość pliku 
  16. $plik_h = imagesy( $image2 ); // wysokość pliku 
  17. $znaczek_w = imagesx( $image1 ); // szerokość znaczka 
  18. $znaczek_h = imagesy( $image1 ); // wysokość znaczka 
  19.  
  20. if( $pozycja == "tl" ) 
  21. { 
  22. $od_x = 0; 
  23. $od_y = 0; 
  24. } 
  25. if( $pozycja == "tr" ) 
  26. { 
  27. $od_x = $plik_w - $znaczek_w; 
  28. $od_y = 0; 
  29. } 
  30. if( $pozycja == "bl" ) 
  31. { 
  32. $od_x = 0; 
  33. $od_y = $plik_h - $znaczek_h; 
  34. } 
  35. if( $pozycja == "br" ) 
  36. { 
  37. $od_x = $plik_w - $znaczek_w; 
  38. $od_y = $plik_h - $znaczek_h; 
  39. } 
  40.  
  41. imagecopy( $image2, $image1, $od_x, $od_y, 0, 0, $znaczek_w, $znaczek_h ); 
  42. imagejpeg( $image2 ); 
  43. imagedestroy( $image1 ); 
  44. imagedestroy( $image2 ); 
  45.  
  46. } 
  47.  
  48. header( "Content-type: image/jpg" ); 
  49. znaczek("images/tp/tapeta.jpg","br"); 
  50. ?>


Generuje od obrazek z logiem w czsie rzeczywistym i wysyla do uzytkownika, wszystko fajnie dziala, ale czy jezeli na serwerze bede mial srednio 1 wywolanie obrazka na sekunde to czy nie za bardzo obciazy to serwer?

Ps. uzylem funkcji do pomiaru czasu generowania strony i wyszlo mi ze sie generuje 5-9 sekund, podczas gdy ja nie oczekuje na strone dluzej niz 1 sekunda. Jak to jest mozliwe?
TomASS
Cytat
bede mial srednio 1 wywolanie obrazka na sekunde to czy nie za bardzo obciazy to serwer?

Nie powinno.
Cytat
Ps. uzylem funkcji do pomiaru czasu generowania strony i wyszlo mi ze sie generuje 5-9 sekund, podczas gdy ja nie oczekuje na strone dluzej niz 1 sekunda. Jak to jest mozliwe?

Pokaż kod jaki użyłeś do pomiaru czasu
Bojakki
Kod wyglada tak:

Na poczatku strony:
  1. <?php
  2.  
  3. function gen_www()
  4. {
  5.  $time = explode(" ", microtime());
  6.  $usec = (double)$time[0];
  7.  $sec = (double)$time[1];
  8.  return $sec + $usec;
  9. }
  10. $start = gen_www();
  11.  
  12. ?>


na koncu strony:
  1. <?php
  2. $end = gen_www();
  3. $run = $end - $start;
  4. echo "Strona wygenerowana w " . substr($run, 0, 5) . " sek.<br />";
  5. ?>

Na innych stronach (gdzie wyjmuje dane z bazy MYSQL) kod ten pokazuje mi
0.001 sek - 0.01 sek
Bastion
pewnie tak to mozliwe ze obrazer masz w cache przegladarki, zrob test

zrob jeden obrazek z napisem "abc"

i ten sam obrazek z napisem "bcd"

jesli obrazek 2 bedzie mial taka sama nazwe jak pierwszy, duze prawdopodbienstwo ze polecie z cache przegladarki obrazek 1 z napisem abc
Apo
To ja pokaże co dawno temu napisałem jak próbowałem takie coś zrobić smile.gif
  1. <?php
  2. class znak_wodny
  3. {
  4. var $file;
  5. var $napis = 'Znak wodny';
  6. var $type;
  7.  
  8. function znak_wodny( $file, $action=)
  9. {
  10. if(file_exists($file))
  11. {
  12. $this->file = $file;
  13. $this->set_sizes();
  14. }
  15.  else die('Brak pliku');
  16. }
  17.  
  18. function set_sizes()
  19. {
  20. $img = imagecreatefromjpeg($this->file);
  21. $bg = imagecolorexactalpha($img, 95, 95, 95, 40);
  22. imagestring($img, 5, 1, 1, $this->napis, $bg);
  23. imagejpeg($img);
  24. imagedestroy($img);
  25. header( "Content-type: image/jpg" );
  26. }
  27. }
  28.  
  29. $znak = new znak_wodny('./artykuly.jpg')
  30. ?>
Bojakki
Apo ----> dzieki za kod.

Juz jest wszystko OK. generowanie obrazka zajmuje srednio 0.063 sek
MalyKazio
Chciałbym rozwinąć ten temat.
Czy mozliwe jest nakladanie znaku wodnego przy odczycie pliku. Przy odczycie ale tylko wtedy gdy wczytywany jest na strone znajdujacym sie na innym serwerze? Np. mam zdjecie u siebie, ale jesli umiesci je na swojej stronie o adresie np. adres.pl to wtedy doda sie do zdjecia napis "Zdjecie z (adres mojej strony)?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.