Autor |
Nachricht |
lordle
Threadersteller
Dabei seit: 14.12.2001
Ort: Augsburg
Alter: 48
Geschlecht:
|
Verfasst Di 09.03.2004 10:45
Titel [php] dpi eines bildes auslesen? |
|
|
Gibt es eine Möglichkeit, mit Hilfe eines PHP-Skriptes die dpi-Größe eines Bildes auszulesen?
Ich möchte sichergehen, dass nur 300dpi-Bilder hochgeladen werden! Aber aus getimagesize() kann man das nicht erkennen!
|
|
|
|
|
Waschbequen
Account gelöscht
Ort: -
|
Verfasst Di 09.03.2004 10:49
Titel
|
|
|
Nope, ich glaube das ist generell nicht möglich, egal mit welchem Tool. Da gab es hier schonmal nen Thread. (Aber rein interessehalber, falls es doch jemand besser weiß: wo werden die Infos darüber eigentlich gespeichert?)
|
|
|
|
|
Anzeige
|
|
|
lordle
Threadersteller
Dabei seit: 14.12.2001
Ort: Augsburg
Alter: 48
Geschlecht:
|
Verfasst Di 09.03.2004 11:08
Titel
|
|
|
naja, im header der datei werden alle notwendigen daten gespeichert!
aber das wär dann schon der overkill, die datei binär auslesen, konvertieren und den header durchparsen, bis die dpi-zahl kommt!
|
|
|
|
|
marcusm
Dabei seit: 06.05.2002
Ort: europa
Alter: 46
Geschlecht:
|
Verfasst Di 09.03.2004 11:45
Titel
|
|
|
Und wie wäre es aus den Maßen der Datei und der Dateigröße die evtl. dpi Zahl zu errechnen und auf die 300dpi abzugleichen???
Ist nur ne Idee...
Gruß
Marcus
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Di 09.03.2004 11:50
Titel
|
|
|
manche formate, aber nur manche, speichern zusätzliche infos im dateiheader, die mit getimagesize() ebenfalls ausgelesen werden. schau dir dazu mal die doku an. ansonsten wüßte ich auch keine möglichkeit, wie man das testen könnte, höchstens mit bildmanipulationssoftware wie gdlib oder imagemagick (?)
|
|
|
|
|
lordle
Threadersteller
Dabei seit: 14.12.2001
Ort: Augsburg
Alter: 48
Geschlecht:
|
Verfasst Di 09.03.2004 15:42
Titel gelöst! |
|
|
also das hat mir jetzt keine Ruh gelassen.
Es gibt wirklich keine Funktion in PHP oder gdlib, die die dpi-grösse eines Bildes auslesen oder gar bearbeiten kann!
Aber zumindest in einem JPG (und darum geht es mir) werden im Header wie oben bereits erwähnt, die dpi-auflösung gespeichert. Das geschieht in Byte 15 und 16. Ich hab mir ne kleine Funktion geschrieben, die das ganze ausliest.
Die Abfrage, ob $datei auch wirklich ein JPG ist, hab ich jetzt mal aussen vor gelassen und sollte zur Fehlervermeidung vorher geprüft werden!
Gerade bei 300dpi Bildern sollte aber darauf geachtet werden, dass meine Lösung das gesamte Bild in den Speicher lädt und durchsucht! Kann also leicht an die Grenzen stossen! Also nach dem Öffnen sofort wieder schliessen!
Code: | // dpi-Größe auslesen
function dpi_auslesen_jpg($datei) {
$fh = fopen($datei, 'r');
$header = fread($fh, 16);
fclose($fh);
$aufloesung = unpack('x14/ndpi', $header);
return $aufloesung['dpi'];
} |
|
|
|
|
|
Benutzer 1103
Account gelöscht
Ort: -
|
Verfasst Di 09.03.2004 15:55
Titel
|
|
|
WOW...bin begeistert...es funktioniert!
//EDIT: kannst du vielleicht erläutern WARUM genau das funktioniert? was genau macht dieses unpack?
Zuletzt bearbeitet von am Di 09.03.2004 16:01, insgesamt 1-mal bearbeitet
|
|
|
|
|
Lazy-GoD
Moderator
Dabei seit: 26.11.2001
Ort: -
Alter: 54
Geschlecht:
|
Verfasst Di 09.03.2004 16:16
Titel
|
|
|
schwampf hat geschrieben: | was genau macht dieses unpack? |
http://de.php.net/unpack
BTW, lordle, es werden nur die ersten 16 bytes der Datei ausgelesen, nicht die ganze Datei...
Code: | $header = fread($fh, 16); |
|
|
|
|
|
|
|
|
Ähnliche Themen |
[css] div positionierung eines bildes
Dreamweaver => Verlinkung eines Bildes
Farbüberlagerung eines transparenten Bildes?
Probleme mit Vergrößerung der sebsterstellten Bildes
Teile eines Bildes farbig
umbenennen eines Bildes : php [solved]
|
|