phpbar.de logo

Mailinglisten-Archive

[php] Upload: Herausfinden ob es ein Image ist?

[php] Upload: Herausfinden ob es ein Image ist?

Oliver Kurlvink php_(at)_phpcenter.de
31 Jan 2002 10:05:51 CET


hi :)

Ich möchte meinen Usern den Upload von Grafiken ermöglichen. Die
Grafiken werden dabei automatisch skaliert (Icons, Thumbnails). Das
funktioniert mit der Ausnahme von animierten Gifs (jpg-Grafik kann
imagemagick nicht erzeugen) sehr gut. ICh möchte allerdings
nicht-Grafiken abfangen. Momentan mache ich das sehr primitiv indem ich
dne Suffix auf PNG, JPG, JPEG oder GIF checke. Das ist natürlich
Unsinn, da der Suffix nichts über den Inhalt der Datei aussagt.
Außerdem muss ich herausfinden, ob ImageMagick die Grafik einlesen
kann. Ich habe folglich zwei Möglichkeiten:

- Mit Imagemagick schauen, ob die Datei als Grafik erkannt wird.
  Problem: IM erzeugt bei jeder Aktion eine temporäre Datei, auf die
die Aktion angewendet wird, auch bei so simplen Dingen wie Dateinfo
anzeigen. Wird die Aktion korrekt beendet, so wird die Datei gelöscht.
Wird die Aktion allerdings nicht korrekt beendet, so bleibt die Datei
liegen. Erkennt folglich IM die Datei nicht als Grafik, so bleibt eine
temporäre Datei liegen, ich kann mir die Fehlermeldung von IM auf den
Dateinamen parsen und diesen dann manuell entfernen. Das ist natürlich
nur suboptimal. Dummerweise konnte ich keine Info darüber finden, wie
ich IM dazu kriege, seinen Müll immer wegzuräumen. Auch eine
Formatierung der Ausgabe damit ich ich nur gefundenes Format und dann
tempfile kriege (oder halt nur tempfile) bringt nichts, da IM stur bei
einem nicht erkannten Format mit einer Fehlermeldung abbricht.

- Mit file die Datei analysieren lassen
  Problem: Ich kann zwar ermitteln ob das ganze eine Grafik ist (image
data bzw. bitmap data), nicht aber herauskriegen, ob das Format auch
von IM akzeptiert wird...

Habt ihr eine schlaue Idee wie ich das tmpfile von IM automatisch
wegräumen lasse? Eigentlich finde ich es ziemlich frech, dass IM
kommentarlos das Dateisystem zumüllt. In der Doku habe ich über dieses
Verhalten auch nichts finden können :(

ciao :)


php::bar PHP Wiki   -   Listenarchive