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 (1 - 5)
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Tak.

Pamiętaj jedynie że jeśli obróbka każdego zdjęcia będzie czasochłonna (duży rozmiar, skomplikowane operacje) a plików w folderze sporo to skrypt będzie długo to mielił. Wtedy dobrze mieć wpływ na maksymalny czas jego wykonania.
Go to the top of the page
+Quote Post
Cezar708
post
Post #3





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


oczywiście, że się da Directory Iterator na pewno Ci się przyda, zakładam że obróbkę w GD już umiesz zrobić.

Pozdrawiam
Go to the top of the page
+Quote Post
Lejto
post
Post #4





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

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


ok, dzięki za rady spotkałem już się z Directory Iterator, pokombinuje i napisze. A w gd otwierać plik, dodać napis i zapisać czy jakoś inaczej?
Go to the top of the page
+Quote Post
mike
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Lejto @ 12.06.2008, 12:24:46 ) *
ok, dzięki za rady spotkałem już się z Directory Iterator, pokombinuje i napisze. A w gd otwierać plik, dodać napis i zapisać czy jakoś inaczej?
A jak wyobrażasz sobie edycję pliku? Bez otwierania?
Ja wiem że na razie badasz teren przed zabraniem się za kodowanie ale opamiętaj się (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Lejto
post
Post #6





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

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: 24.12.2025 - 09:15