Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]/[gd]Edycja wszystkich plików w katalogu, czy da się to zrobić
Lejto
post
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


Witam
Wiem że php może wszystko ale mam takie pytanie czy można zrobić tak:
1. W pętli foreach otworzyć katalog ze zdjęciami.
2. Pobrać nazwy zdjęć w potem z pętli np. while edytować je w GD
3. Dodać na każde z nich jakiś napis i zapisać każde z osobna.

Czy jest to do wykonania??
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Lejto
post
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


ok, napisałem już kod
przetestowałem go na 4 plikach w katalogu zmieniło wszystkie (dodało na nie chciany napis), potem edytowałem przez gd 150 zdjęć, odpaliłem skrypt trochę się wczytywał ale nie pozmieniał wszystkich zdjęć tylko część, dlaczego? prze obróbce raz rozmiar zdjęcia się zwiększa (to rozumiem) a raz zmniejsza (tego nie trochę nie rozumiem)

KOD:
  1. <?
  2. /* Copyright(C) Lukasz Ogan, 2008 : All Rights Reserved */
  3.  
  4. $text = "www.2c-nowe.com";
  5. $obecny_kat = '../galeria/obrazy/';
  6. $kat = opendir($obecny_kat);
  7. $jakosc = '100'; // ustawia jakość zdjęcia od 0 - 100
  8. $dir = "../galeria/obrazy/"; 
  9.  
  10. $sciezka_do_katalogu = "../galeria/obrazy/";
  11. $n=0;
  12. if(@$d = opendir($sciezka_do_katalogu)){
  13.  
  14. while ($plik = readdir($d)) {
  15.  if(stristr($plik, '.jpg') or stristr($plik, '.jpeg') or stristr($plik, '.png')){
  16.  $n++;
  17. $losowe_zdjecie[$n] = "$plik";
  18.  
  19. $lol = $sciezka_do_katalogu.$plik;
  20. $ob = imagecreatefromjpeg($lol);
  21. if(!$ob)
  22. {
  23. echo 'Stworzenie obrazka nie powiodło się :(';
  24. }
  25. else
  26. {
  27.  
  28. $szerokosc_obrazka = imagesx($ob);
  29. $wysokosc_obrazka = imagesy($ob);
  30.  
  31. //18-pikselowy margines od krawędzi
  32. $szerokosc_obrazka_bez_marginesow = $szerokosc_obrazka - (* 18);
  33. $wysokosc_obrazka_bez_marginesow = $wysokosc_obrazka - (* 18);
  34.  
  35. //obliczanie pasującego zormiaru czcionki
  36. $rozmiar_czcionki = 15;
  37.  
  38. //gd2, gdzie są fonty?
  39. putenv('GDFONTPATH=C:WINDOWSFonts');
  40. $nazwa_czcionki = 'verdana';
  41.  
  42. do
  43. {
  44. //obliczanie rozmiaru tekstu przy tym rozmiarze czcionki
  45.  $bbox = imagettfbbox($rozmiar_czcionki, 0, $nazwa_czcionki, $text);
  46.  
  47. $tekst_prawy = $bbox[2]; //prawa współrzędna
  48. $tekst_lewy = $bbox[0]; //lewa współrzędna
  49. $szerokosc_tekstu = $tekst_prawy - $tekst_lewy; //jaki szeroki?
  50. $wysokosc_tekstu = abs($bbox[7] - $bbox[1]); //jaki wysoki?
  51. }while($rozmiar_czcionki > 8 &&
  52. ($wysokosc_tekstu > $wysokosc_obrazka_bez_marginesow ||
  53. $szerokosc_tekstu > $szerokosc_obrazka_bez_marginesow)
  54. );
  55.  
  56.  
  57.  
  58. //odnaleziono pasujący rozmiar czcionki
  59. //teraz trzeba obliczyć jego współrzędne
  60. $tekst_x = $szerokosc_obrazka/1.01 - $szerokosc_tekstu/1.01;
  61. $tekst_y = $wysokosc_obrazka/1.01 - $wysokosc_tekstu/1.01;
  62.  
  63. if($tekst_lewy < 0)
  64. $tekst_x += abs($tekst_lewy); //dodanie współczynnika do lewej pozycji
  65. $nad_linia_tekstu = abs($bbox[7]); //jak wysoko nad podstawą?
  66. $tekst_y += $nad_linia_tekstu; //dodanie współczynnika podstawy
  67.  
  68. $test_y -=2; //współczynnik dostosowania kształtu do szablonu
  69.  
  70. $bialy = imagecolorallocate($ob, 255, 255, 255);
  71. imagettftext($ob, $rozmiar_czcionki, 0, $tekst_x, $tekst_y, $bialy, $nazwa_czcionki, $text);
  72. header('Content-type: image/jpg'); //header
  73.  imagejpeg($ob,$lol,$jakosc); //zapis zdjęcia
  74.  
  75.  
  76. }
  77.  
  78.  
  79.  }
  80.  
  81.  }
  82.  
  83. }
  84.  
  85. closedir($obecny_kat); // zamknięcie katalogu
  86.  
  87. /***********************************
  88.  _ _ ___ _ _  _  ___  ___
  89. | |/ / | : | | | | | | | |_| | __|
  90. |_|_ |_:_| |_|_| |_| |_|_| |___|
  91.  
  92. ***********************************/
  93.  ?>


Ten post edytował Lejto 15.06.2008, 19:00:03
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 07:21