Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]/[gd]Edycja wszystkich plików w katalogu
Forum PHP.pl > Forum > PHP
Lejto
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??
mike
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.
Cezar708
oczywiście, że się da Directory Iterator na pewno Ci się przyda, zakładam że obróbkę w GD już umiesz zrobić.

Pozdrawiam
Lejto
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?
mike
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ę tongue.gif
Lejto
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.  ?>
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.