


Eine kurze Diskussion darüber, wie man mit PHP die EXIF-Informationen von Bildern liest (mit Code)
Wie lese ich die EXIF-Informationen von Bildern mit PHP? Der folgende Artikel stellt Ihnen vor, wie Sie mit PHP die EXIF-Informationen von Bilddateien erhalten. Ich hoffe, er ist hilfreich für Sie!
In den von uns aufgenommenen Fotos und verschiedenen Bilddateien sind tatsächlich einige Informationen gespeichert, die nicht intuitiv erkennbar sind, wie z. B. die Standortinformationen beim Fotografieren mit einem Mobiltelefon, die Art und Größe des Bildes usw. Diese Informationen werden als EXIF-Informationen bezeichnet. Im Allgemeinen verfügen Bilddateien wie JPG und TIFF über solche Informationen. EXIF ist eigentlich speziell auf diese Art von Digitalfotos zugeschnitten und wird speziell zum Aufzeichnen der Attributinformationen und Aufnahmedaten von Digitalfotos verwendet. Es wurde ursprünglich in Japan entwickelt. Das ist eigentlich leicht zu verstehen, Japan hat im Grunde ein Monopol auf die Kameraindustrie, also werden diese Standards natürlich von ihnen festgelegt!
EXIF bietet native Unterstützung in Windows-Systemen. Klicken Sie mit der rechten Maustaste auf das Bild, um das Menü zu öffnen, klicken Sie dann auf Eigenschaften und wechseln Sie zu Details, um die EXIF-Informationen der Bilddatei direkt anzuzeigen. Da diese Informationen nach Belieben bearbeitet werden können, können sie als Referenz verwendet werden und können nicht als eindeutige Werte bestimmter Funktionsattribute abgerufen werden. Vertrauen Sie beispielsweise den Informationen in EXIF nicht vollständig, z. B. Breite und Höhe.
Informationen zum Bildtyp in EXIF abrufen
Beobachten wir zunächst den Bildtyp über EXIF.
var_dump(exif_imagetype($png)); // int(3) echo exif_imagetype($png) == IMAGETYPE_PNG ? $png . '是 PNG 图片' : $png . '不是 PNG 图片', PHP_EOL; // ../img/1.png是 PNG 图片 var_dump(exif_imagetype($jpg)); // int(2) echo exif_imagetype($jpg) == IMAGETYPE_JPEG ? $jpg . '是 jpg 图片' : $jpg . '不是 JPG 图片', PHP_EOL; // ../img/2.jpg是 jpg 图片
Wenn Sie die Funktion exif_imagetype() direkt verwenden, wird eine Konstante des Bildtyps zurückgegeben. Dabei handelt es sich um den Bildtyp, der durch die Konstanteninformationen dargestellt wird, beginnend mit IMAGETYPE_. Es umfasst auch viele andere Typen. Hier zeigen wir nur die Erfassung unserer gängigsten JPG- und PNG-Bildtypen.
Es ist dasselbe wie das dritte Attribut, das von der Funktion getimagesize() zurückgegeben wird, nämlich das Attribut mit dem Index 2. In der Funktion getimagesize() stellen 0 und 1 die Breite und Höhe dar und 2 repräsentiert den Typ von Bild.
var_dump(getimagesize($jpg)); // array(7) { // [0]=> // int(300) // [1]=> // int(244) // [2]=> // int(2) // [3]=> // string(24) "width="300" height="244"" // ["bits"]=> // int(8) // ["channels"]=> // int(3) // ["mime"]=> // string(10) "image/jpeg" // }
Erhalten Sie vollständige EXIF-Informationen
Alle vollständigen EXIF-Informationen im Bild werden über die Funktion exif_read_data() abgerufen.
var_dump(exif_read_data($png)); // PHP Warning: exif_read_data(1.png): File not supported in /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202011/source/11.使用PHP获取图像文件的EXIF信息.php on line 14 // Warning: exif_read_data(1.png): File not supported in /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202011/source/11.使用PHP获取图像文件的EXIF信息.php on line 14 // bool(false) var_dump(exif_read_data($jpg)); // array(8) { // ["FileName"]=> // string(5) "2.jpg" // ["FileDateTime"]=> // int(1605061174) // ["FileSize"]=> // int(19075) // ["FileType"]=> // int(2) // …… // ……
Wie bereits erwähnt, existieren EXIF-Informationen nur in JPG, TIFF und anderen Bildformaten, sodass PNG-Bilder keine EXIF-Informationen erhalten können. Wenn exif_read_data() für PNG-Bilder verwendet wird, wird eine Warnung ausgegeben. Bei JPG wird der komplette EXIF-Inhalt zurückgegeben. Hier haben wir nur einen Teil davon abgefangen, nicht nur Breite, Höhe, Typ, Komprimierungsverhältnis usw. Wenn es mit einem Mobiltelefon aufgenommen wurde, können Sie auch den Hersteller des Mobiltelefons, den geografischen Standort usw. sehen. Verschlussparameter, Blendenparameter usw., das hat natürlich auch viel mit der von Ihnen verwendeten Kamera zu tun, einige Hersteller verfügen möglicherweise über weniger Daten. Sie können davon ein Foto machen und sich mit dieser Funktion selbst davon überzeugen.
Darüber hinaus gibt es eine Alias-Funktion read_exif_data(), die eine ähnliche Funktion wie exif_read_data() hat. Sie ist ein Alias davon und wurde nach PHP7 als veraltete Syntax markiert. Jeder kann es herausfinden.
var_dump(read_exif_data($jpg)); // PHP Deprecated: Function read_exif_data() is deprecated in /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202011/source/11.使用PHP获取图像文件的EXIF信息.php on line 17 // Deprecated: Function read_exif_data() is deprecated in /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202011/source/11.使用PHP获取图像文件的EXIF信息.php on line 17 // array(8) { // ["FileName"]=> // string(5) "2.jpg" // ["FileDateTime"]=> // int(1605061174) // ["FileSize"]=> // …… // ……
Holen Sie sich den Header-Namen des angegebenen Index
Der Index-Header entspricht dem Feldnamen in EXIF. Wir können alle derzeit unterstützten Index-Header-Informationen anzeigen, und es gibt viele Inhalte. Sie können den Attributnamen auch anhand des Indexheaders ermitteln und dann in EXIF nach den entsprechenden Attributinformationen suchen.
echo "256: " . exif_tagname(256) . PHP_EOL; // 256: ImageWidth for ($id = 1; $id <= 65535; $id++) { if (exif_tagname($id) != "") { echo $id . ' ( ' . exif_tagname($id) . ' )', PHP_EOL; } } // 11 ( ACDComment ) // 254 ( NewSubFile ) // 255 ( SubFile ) // 256 ( ImageWidth ) // 257 ( ImageLength ) // 258 ( BitsPerSample ) // 259 ( Compression ) // …… // …… // ……
In JPG-Dateien eingebettete Miniaturansichten lesen
Viele Leute wissen möglicherweise nicht, dass Miniaturansichten im EXIF-Format gespeichert werden können. Und die Fotos, die mit jedem Mobiltelefon aufgenommen werden, haben grundsätzlich dieses Miniaturbild. Wenn das Bild in Windows-Systemen über eine Miniaturansicht verfügt, wird die Miniaturansicht im EXIF-Format direkt verwendet. Andernfalls wird automatisch eine Thumbs.db-Datei im Verzeichnis generiert, bei der es sich um eine Miniaturansichtsdatenbank handelt.
var_dump(exif_thumbnail('../img/3.jpeg')); file_put_contents('../img/3-thumbnail.jpeg', exif_thumbnail('../img/3.jpeg'));
In PHP können Sie die in EXIF gespeicherten Miniaturbildinformationen direkt in einer JPG-Datei über die Funktion exif_thumbnail() abrufen. Im Testcode rufen wir es ab und speichern es dann als formales Bild, sodass jeder sehen kann, wie das Miniaturbild wirklich aussieht. Und wenn wir exif_read_data() verwenden, um diese Datei zu lesen, können wir auch die im Miniaturbild gespeicherten Informationen sehen.
var_dump(exif_read_data('../img/3.jpeg')); // array(56) { // …… // …… // …… // ["Make"]=> // string(6) "Xiaomi" // ["THUMBNAIL"]=> // array(9) { // ["JPEGInterchangeFormat"]=> // int(5504) // ["Orientation"]=> // int(6) // ["JPEGInterchangeFormatLength"]=> // int(14369) // ["Compression"]=> // int(6) // ["ResolutionUnit"]=> // int(2) // ["XResolution"]=> // string(4) "72/1" // ["YResolution"]=> // string(4) "72/1" // ["ExifImageLength"]=> // int(240) // ["ExifImageWidth"]=> // int(320) // } // ["UndefinedTag:0x9AAA"]=> // string(4480) "1y�L�=w%�s_�&��v��oJ��$Gdz|d�9n� // …… // ……
Zusammenfassung
Jetzt haben Sie ein grundlegendes Verständnis für das EXIF von Bildern. Beim heutigen Lernen sind einige Punkte zu beachten: Erstens ist EXIF nur in Bildformaten wie JPG und TIFF verfügbar, zweitens sind sie modifizierbar und drittens kann dieses Ding sogar ein Miniaturbild speichern. Tatsächlich ist Lernen ein Fass ohne Boden, und ich habe versehentlich meine Augen wieder geöffnet. Kommt schon, Jungs!
Testcode: https://github.com/zhangyue0503/dev-blog/blob/master/php/202011/source/11. Verwenden Sie PHP, um die EXIF-Informationen von Bilddateien zu erhalten.php
Empfohlen Lernen: „ PHP-Video-Tutorial》
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion darüber, wie man mit PHP die EXIF-Informationen von Bildern liest (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Vermeiden Sie N 1 Abfrageprobleme, reduzieren Sie die Anzahl der Datenbankabfragen, indem Sie die zugehörigen Daten im Voraus laden. 2. Wählen Sie nur die erforderlichen Felder aus, um das Laden vollständiger Entitäten zu vermeiden, um Speicher und Bandbreite zu sparen. 3.. Verwenden Sie Cache-Strategien vernünftigerweise, z. 4. Optimieren Sie den Lebenszyklus der Entität und rufen Sie Clear () regelmäßig an, um den Speicher freizugeben, um den Speicherüberlauf zu verhindern. 5. Stellen Sie sicher, dass der Datenbankindex die generierten SQL -Anweisungen existiert und analysiert, um ineffiziente Abfragen zu vermeiden. 6. Deaktivieren Sie die automatische Änderungsverfolgung in Szenarien, in denen Änderungen nicht erforderlich sind, und verwenden Sie Arrays oder Leichtgewichtsmodi, um die Leistung zu verbessern. Die korrekte Verwendung von ORM erfordert die Kombination der SQL -Überwachung, -gespeicherung, der Stapelverarbeitung und der geeigneten Optimierung, um die Anwendungsleistung zu gewährleisten und gleichzeitig die Entwicklungseffizienz beizubehalten.

Die Datei "Settings.JSON" befindet sich auf dem Pfad auf Benutzerebene oder Arbeitsbereichsebene und wird verwendet, um die VSCODE-Einstellungen anzupassen. 1. Benutzer-Level-Pfad: Windows ist C: \ Benutzer \\ AppData \ Roaming \ Code \ User \ Settings.json, MacOS is /users//library/applicationsupport/code/user/settings.json, Linux is /home/.config/code/usser/setings.json; 2. Pfad auf Arbeitsbereichsebene: .VSCODE/Einstellungen im Projekt Root Directory

Mit Bref ermöglicht es PHP-Entwicklern, skalierbare, kostengünstige Anwendungen zu erstellen, ohne Server zu verwalten. 1.Bref bringt Php nach AWSLambda, indem er eine optimierte PHP -Laufzeitschicht bereitstellt, Php8.3 und andere Versionen unterstützt und sich nahtlos in Frameworks wie Laravel und Symfony integriert. 2.. 3. Führen Sie den Befehl ServerlessDeploy aus, um die Bereitstellung abzuschließen, apiCateway automatisch zu konfigurieren und Zugriffs -URLs zu generieren. 4. Für Lambda -Beschränkungen bietet BREF Lösungen.

ReadOmpropertiesinphp8.2canonlyBeSignedoncinstructororatDeklarationandCannotBemodifiedAfterward, durchsetzungsvermutbarkeitatheluagelevel.2.ToachedevimmiMmutability, WrapMutabletypesLikearrayObjecustomimmutablecollections

Der Müllsammlung von PHP basiert auf der Referenzzählung, aber kreisförmige Referenzen müssen von einem periodischen kreisförmigen Müllsammler verarbeitet werden. 1. Die Referenzzahl gibt den Speicher sofort frei, wenn keine Referenz auf die Variable vorhanden ist. 2. Referenzreferenz bewirkt, dass Speicher nicht automatisch freigegeben werden kann, und es hängt davon ab, dass GC ihn erfasst und reinigt. 3.. GC wird ausgelöst, wenn das "mögliche Wurzel" den Schwellenwert erreicht oder manuell gc_collect_cycles () aufruft; 4. Langzeit laufende PHP-Anwendungen sollten gc_status () überwachen und rechtzeitig gc_collect () aufrufen, um Speicherleckage zu vermeiden. 5. Zu den Best Practices gehört die Vermeidung von kreisförmigen Referenzen, die Verwendung von gc_disable () zur Optimierung der Leistungsschlüsselbereiche und Dereference -Objekte über die Clear () -Methode des ORM.

HTTP-Protokoll Middleware in Go kann Anforderungsmethoden, Pfade, Client-IP und zeitaufwändiges Aufzeichnen aufzeichnen. 1. Verwenden Sie http.Handlerfunc, um den Prozessor zu wickeln, 2. Nehmen Sie die Startzeit und die Endzeit vor und nach dem Aufrufen als nächstes auf. Der vollständige Beispielcode wurde überprüft, um auszuführen und eignet sich zum Starten eines kleinen und mittelgroßen Projekts. Zu den Erweiterungsvorschlägen gehören das Erfassen von Statuscodes, die Unterstützung von JSON -Protokollen und die Nachverfolgung von ID -IDs.

UsearestapitobridgephpandmlmodelsbyrunningThemodelinpythonviaplaskorfastapiandcallingitFrompusingCurlorguzzle.2.RunpythonScriptsDirectlyfrompusexec () orshell_exec () Forsimple, Low-TrafcuStates, und Low-Trafficusecases

Verwenden Sie zunächst JavaScript, um die Einstellungen für Benutzersysteme und lokal gespeicherte Themeneinstellungen zu erhalten und das Seitenthema zu initialisieren. 1. Die HTML -Struktur enthält eine Schaltfläche zum Auslösen von Themenwechsel. 2. CSS verwendet: root, um helle Themenvariablen zu definieren, .Dark-Mode-Klasse definiert dunkle Themenvariablen und wendet diese Variablen über var () an. 3.. JavaScript erkennt bevorzuge-farbige Scheme und liest LocalStorage, um das ursprüngliche Thema zu bestimmen. 4. Schalten Sie die Dark-Mode-Klasse im HTML-Element beim Klicken auf die Schaltfläche und speichern Sie den aktuellen Status vor LocalStorage. 5. Alle Farbänderungen werden mit einer Übergangsanimation von 0,3 Sekunden begleitet, um den Benutzer zu verbessern
