Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Pel-> tworzenie danych Exif
Radeqq
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 2
Dołączył: 10.05.2008

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


Do zapisu danych Exif w jpeg znalazłem PEL, przykład zapisu z tej strony - pozwolę sobie zacytować:

  1.  
  2. function loadwritedesc($file, $input_text, $input_text2, $input_text3){
  3.  $jpeg = new PelJpeg();
  4.  $tifff = $tiff=getBytes();
  5.  $jpeg->loadFile($file);
  6.  $app1 = $jpeg->getSection(PelJpegMarker::APP1);
  7.  $tiff = $app1->getTiff();
  8.  $ifd0 = $tiff->getIfd();
  9.  $exif = $ifd0->getSubIfd(PelTag::EXIF_IFD_POINTER);
  10.  // create and overwrite image_description tag and write the text
  11.   $describer = new PelEntryAscii(PelTag::XP_TITLE, $input_text);
  12.   $ifd0->addEntry($describer);
  13.   file_put_contents($file, $jpeg->getBytes());
  14.  
  15. }


XP_TITLE ładnie tworzy tytuł zdjęcia widoczny w Windowsie. I tu pojawia się problem, ponieważ tytuł tworzy tylko wtedy jeśli zdjęcie zostało zrobione np. aparatem lub istnieją już jakieś dane Exfif (czyt. sami je wpiszemy). Natomiast jeśli zdjęcie zostało utworzone w PHP ( imagecreatefromjpeg($zdjecie); ) to (prawdopodobnie) dane Exif nie istnieją i skrypt wywala błąd:
Cytat
Fatal error: Call to a member function getTiff() on a non-object in...
- nie mam pojęcia jak zadeklarować dane Exif

W manualu znalazłem coś w tym stylu:
Cytat
getBytes (line 157)

Produce bytes for the Exif data.
return: bytes representing this object.
string getBytes ()
ale nie mam pojęcia czy to jest to i jak tego użyć. Proszę o pomoc, dziękuję.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Radeqq
post
Post #2





Grupa: Zarejestrowani
Postów: 15
Pomógł: 2
Dołączył: 10.05.2008

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


Niestety dane ustawione w IPTC nie są widoczne w Windowsie. Pozwolę sobie załączyć obrazek. Moin celem jest edytowanie i tworzenie tych ustawień widocznych na obrazku w php. Gdy taki sam obrazek załączyłem do funkcji podanej w manualu - nie udało mi się wyświetlić żadnych zapisanych przez Windows. Dopiero jeśli sobie je sam zapisałem (np. echo $i->set(IPTC_COPYRIGHT_STRING,"Here goes the new data"); 
$i->write(); ) to były widoczne ale tylko w funkcji - nie w Xp.


Natomiast przy:

  1. <?php
  2. $exif = exif_read_data('./ultraobraz.jpg', 0, true);
  3. echo "test2.jpg:<br />\n";
  4. foreach ($exif as $key => $section) {
  5.   foreach ($section as $name => $val) {
  6.   echo "$key.$name: $val<br />\n";
  7.   }
  8. }
  9. ?>


Wyświetla:

Cytat
IFD0.Exif_IFD_Pointer: 236
IFD0.Title: teksttytuBu
IFD0.Comments: jaki[ komentarz
IFD0.Author: autorzdjcia
IFD0.Keywords: sBowapodkluczowe
IFD0.Subject: tematzdjcia
COMMENT.0: CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality
EXIF.UserComment: CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality
WINXP.Title: tekst tytu?u
WINXP.Comments: jaki? komentarz
WINXP.Author: autor zdj?cia
WINXP.Keywords: s?owa podkluczowe
WINXP.Subject: temat zdj?cia


Czyli za te informacje odpowiada WINXP.Title:IFD0.Title: . Teraz albo poszukać odpowiedniego id tagu w IPTC ((IMG:style_emoticons/default/questionmark.gif) a ja wciąż nie widzę różnicy pomiędzy Exif, IPTC ) albo zastosować PEL'a (patrz kod php w pierwszym poście), które modyfikuje dane tylko wtedy jeśli już coś zostało wprowadzone (czyli pozostaje pytanie - jak zasymulować wprowadzanie danych (exif)).

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: 4.10.2025 - 13:04