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 (1 - 3)
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Zerknąłem na stronę i muszę Cię rozczarować. Ta funkcja konwertuje obiekt PEL do ciągu bajtów, dzięki czemu można obrazek wyświetlić. Nie modyfikuje ona exif.

Nie masz jednak co się martwić... Radze Ci się przyjrzeć czemuś innemu...
http://pl2.php.net/manual/en/function.iptcembed.php
Go to the top of the page
+Quote Post
Radeqq
post
Post #3





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
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Tu masz w miarę ładnie wytłumaczone oba pojęcia
http://www.sphoto.com/techinfo/rawconverte...es/exifiptc.htm
http://blog.peterhaza.no/working-with-imag...aders-from-php/
Drugi link podaje jak zmieniać iptc, ale nie exif
Ale istnieją opensource'owe rozwiązania (IMG:style_emoticons/default/winksmiley.jpg)
http://sourceforge.net/projects/openexif/
http://edit-exif.sourceforge.net/
Myslę, że one Cię mogą zainteresować (IMG:style_emoticons/default/smile.gif)
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: 22.08.2025 - 17:12