phpbar.de logo

Mailinglisten-Archive

[php] Thies ? oder wie funkt. iptcembed() ?

[php] Thies ? oder wie funkt. iptcembed() ?

Thies Arntzen thies_(at)_digicol.de
Wed, 20 Sep 2000 19:27:00 +0200


--GRPZ8SYKNexpdSJ7
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

On Wed, Sep 20, 2000 at 07:14:10PM +0200, Joerg Behrens wrote:
> Moin,moin Liste (Thies:)

    moin.

    siehe anhang - bitte den wink mit dem zaunpfahl _nicht_
    überlesen;-) (so wie dein vorgänger -> fitzz)

    tc

> 
> weis jemand wie man mit der undokumemtierten Funktion 'iptcembed()' 
> umgeht?. Aus dem Source gewinnt man folgendes:
> 'array iptcembed(string iptcdata, string jpeg_file_name [, int spool])'
> 
> Wie muss nun iptcdata strukturiert sein? Muessen es schon Binaerdaten
> sein? Warum wird ein Array zurueckgegeben oder wird nicht gleich in die
> Datei geschrieben? Fragen ueber Fragen.
> Falls einer ein Minibeispiel  hat.. mein ewiger Dank sei ihm sicher.
> 
> Leider hat mir als Unkundiger der Sourcecode keine weiteren Erkenntnisse
> gebracht.
> 
> Gruss
> Joerg Behrens
> 
> -- 
> Key fingerprint =  92 7D E0 A6 CF AE EC 32  14 28 EF 0D 57 2A 88 5B
> ----------------------------------------------------------------------
> TakeNet GmbH					Mobil: 0171/60 57 963			
> D-97080 Wuerzburg				Tel: +49 931 903-2243				
> Alfred-Nobel-Straße 20				Fax: +49 931 903-3025
> 
> -- 
> ** Durchgehend geöffnet: http://www.php-center.de **
> Die PHP-Liste: mailto:php_(at)_php-center.de
> http://infosoc.uni-koeln.de/mailman/listinfo/php

-- 

Thies C. Arntzen                 "One Big-Mac, Small Fries and a Coke!"
Digital Collections             Phone +49 40 235350 Fax +49 40 23535180
Hammerbrookstr. 93                              20097 Hamburg / Germany

--GRPZ8SYKNexpdSJ7
Content-Type: message/rfc822
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

Date: Tue, 23 May 2000 11:52:44 +0200
From: "Thies C . Arntzen" <thies_(at)_digicol.de>
To: steffen_(at)_snoopfroggyfrog.de
Cc: Egon Schmid <eschmid_(at)_s.netic.de>
Subject: Re: iptc
Message-ID: <20000523115244.F7335_(at)_godzilla.digicol.de>
References: <392A3AB0.5989.382029_(at)_localhost>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
User-Agent: Mutt/1.2i
In-Reply-To: <392A3AB0.5989.382029_(at)_localhost>; from steffen_(at)_snoopfroggyfrog.de on Tue, May 23, 2000 at 08:00:48AM +0200
Return-Path: <thies_(at)_digicol.de>

On Tue, May 23, 2000 at 08:00:48AM +0200, steffen_(at)_snoopfroggyfrog.de wrote:
> Hallo Thies,
> sorry, daß ich Dich direkt anschreibe, aber ich finde niemanden, 
> der das Problem lösen kann:
> Auf der Suche nach einer Möglichkeit, die Headerinfos aus JPGs 
> per PHP auszulesen, bin ich auf Deinen IPTC-Sourcecode 
> gestoßen. Leider habe ich ein wenig trouble - iptcparse funktioniert 
> zwar, iptcembed nicht. Hast Du Dich inzwischen weiter damit 
> beschäftigt oder kannst Du mir irgendwas zum Aufbau des JPEG-
> Headers mit den enthaltenen IPTC-Daten (wie ihn Photoshop anlegt) 
> sagen? Gibt es Doku dazu oder Spezifikationen?
> Liebe Grüße,
> Steffen

auslesen von IPTC aus 'nen JPEG:

getimagesize($jpegfilename,&$info);

if (isset($info[ "APP13" ]))
  { $iptc = iptcparse($info[ "APP13" ]);
    var_dump($iptc);    
  }

zum embedden muss man nen binären IPTC block haben, den man in
das JPG verfrachten will - dass geht zB so (ne spezifikation
sollte man bei www.iptc.org downloaded können):

function iptc_maketag($rec,$dat,$val)
{ $len = strlen($val);
  if ($len < 0x8000)
    return chr(0x1c).chr($rec).chr($dat).
           chr($len >> 8).
           chr($len & 0xff).
           $val;
  else
    return chr(0x1c).chr($rec).chr($dat).
           chr(0x80).chr(0x04).
           chr(($len >> 24) & 0xff).
           chr(($len >> 16) & 0xff).
           chr(($len >> 8 ) & 0xff).
           chr(($len      ) & 0xff).
           $val;
}

$iptc = "";
$iptc .= iptc_maketag(2,90,"Hamburg"); // 2,90 is CITY
$iptc .= iptc_maketag(2,120,"blabla"); // 2,120 is CAPTION

und nun:

$buffer = iptcembed($iptc,$jpegfile,$mode);

$mode hat folgende bedeutung:

0 - return das neue JPEG an den caller ($buffer) - dann kann man
es ins filesystem schreiben etc..
1 - return jpeg to caller + direct spool zum web-client.
2 - direct spool zum web-client.


musst einfach mal nen bischen spielen. wenn die es komplett
verstanden hast, wäre es nett wenn du (zB über egon) dein "neues"
wissen in die PHP doku einfliessen lassen könntest!

tc






> 
> 
> 
> _______________________
> SNOOPFROGGYFROG.DE
> - mediendienstleistungen -
> Kirchenstraße 85
> D-81675 München-Haidhausen
> (089) 470 99 33 - 4
> (0179) 219 32 07
> www.snoopfroggyfrog.de

-- 

Thies C. Arntzen                 "One Big-Mac, Small Fries and a Coke!"
Digital Collections             Phone +49 40 235350 Fax +49 40 23535180
Hammerbrookstr. 93                              20097 Hamburg / Germany

--GRPZ8SYKNexpdSJ7--


php::bar PHP Wiki   -   Listenarchive