IPTCPARSE () ist eine integrierte Funktion in PHP für die Parsen von IPTC (International News Agency Standard) in Bilddateien. IPTC -Daten enthalten normalerweise verschiedene Informationen über das Bild, z. B. die Schießzeit, den Schießstandort, der Autor, das Urheberrecht usw. Es kann viele Gründe für die Rückgabe eines leeren Arrays geben, wenn iptCParse () analysiert wird. Wir werden es nacheinander analysieren und Lösungen zur Verfügung stellen.
Stellen Sie zunächst sicher, dass die Bilddatei selbst IPTC -Daten enthält. Nicht alle Bilder enthalten IPTC -Metadaten, insbesondere Bilder in bestimmten Formaten (z. B. PNG) oder Bilder, die auf bestimmte Weise gespeichert sind, haben diese Daten möglicherweise nicht. Sie können einige Tools wie Exiftool verwenden, um zu überprüfen, ob in der Bilddatei IPTC -Daten vorhanden sind.
Sie können die Metadaten der Bilddatei über den folgenden Befehl anzeigen:
exiftool your-image.jpg
Wenn die Bilddatei keine IPTC -Daten enthält, gibt IPTCParse () natürlich ein leeres Array zurück. Zu diesem Zeitpunkt müssen Sie ein Bild mit IPTC -Daten zum Testen ersetzen.
Die Funktion iptCParse () unterstützt die Verarbeitung von Bilddateien im JPEG -Format. Wenn Sie Dateien in Nicht-JPEG-Formaten (z. B. PNG, GIF, BMP usw.) verwenden, gibt die Funktion ein leeres Array zurück, da diese Formate normalerweise keine IPTC-Daten enthalten.
Wenn Sie im Nicht-JPEG-Format an Bilddateien arbeiten, müssen Sie die Dateien in das JPEG-Format konvertieren oder andere Bibliotheken verwenden, um Metadaten in verschiedenen Formaten zu verarbeiten. Eine übliche Praxis besteht darin, PNG -Bilder in JPEG umzuwandeln:
$image = imagecreatefrompng('your-image.png');
imagejpeg($image, 'converted-image.jpg');
imagedestroy($image);
Dann wird das konvertierte JPEG -Bild mit iptCParse () analysiert.
In einigen Fällen ist PHP möglicherweise nicht in der Lage, IPTC -Daten in der Datei aufgrund von Erlaubnisproblemen ordnungsgemäß zu lesen. Dies geschieht normalerweise in einer Serverumgebung, in der die Datei -Leseberechtigungen nicht ordnungsgemäß festgelegt werden.
Stellen Sie sicher, dass die von Ihnen verwendeten Bilddateien zu PHP -Skripten lesbar sind. Sie können die Berechtigungen der Datei über den folgenden Befehl überprüfen:
ls -l your-image.jpg
Wenn die Berechtigungen falsch sind, können Sie den Befehl chmod verwenden, um die Dateiberechtigungen zu ändern, um ihn zu PHP -Skripten lesbar zu machen:
chmod 644 your-image.jpg
Bevor Sie iptCParse () verwenden, können Sie zuerst die Funktion getImageSize () verwenden, um zu überprüfen, ob das Bild korrekt geladen werden kann. Wenn GetImageSize () false zurückgibt, kann dies angezeigt, dass die Bilddatei korrupt oder unleserlich ist.
$imageInfo = getimagesize('your-image.jpg');
if ($imageInfo === false) {
echo "Bilddateien können nicht gelesen werden";
} else {
// Weiter verarbeiten IPTC Daten
}
Für die Verwendung der Funktion iptCParse () muss ein binärer Stream bestehen, der Bilddaten enthält, nicht einen Dateipfad. Wenn Sie einen Dateipfad übergeben, gibt die Funktion ein leeres Array zurück. Sie müssen zuerst die Funktion "File_Get_Contents () verwenden, um den Inhalt der Bilddatei zu lesen und sie dann an iptCParse () zum Parsen weiterzuleiten.
$file = 'your-image.jpg';
$imageData = file_get_contents($file);
$iptcData = iptcparse($imageData);
if (empty($iptcData)) {
echo "Dieses Bild nicht IPTC Daten";
} else {
print_r($iptcData);
}
Wenn keine der oben genannten Methoden das Problem lösen, kann dies an der PHP -Umgebung selbst liegen. Die Funktion iptCParse () stützt sich auf die EXIF -Erweiterung, um sicherzustellen, dass Sie die Erweiterung installiert und aktiviert haben.
Geben Sie den folgenden Befehl in der Befehlszeile ein, um zu überprüfen, ob die EXIF -Erweiterung aktiviert ist:
php -m | grep exif
Wenn es keine Ausgabe gibt, bedeutet dies, dass Ihre PHP -Umgebung keine EXIF -Erweiterung aktiviert hat. Sie können die Erweiterung über den folgenden Befehl installieren und aktivieren:
sudo apt-get install php-exif
sudo service apache2 restart
Oder wenn Sie eine Php.ini -Datei verwenden, stellen Sie sicher, dass die folgenden Konfigurationselemente nicht kommentiert werden:
extension=exif.so
Manchmal kann das Bild selbst beschädigt werden, was dazu führt, dass IPTC -Daten nicht richtig analysiert werden. Sie können versuchen, Bilddateien mithilfe des Bildreparatur-Tools zu überprüfen oder Bilddateien wiederzuerlangen oder hochzuladen.
Wenn Sie auf das Problem von IptcParse () ein leeres Array zurückgeben, können Sie dies aus den folgenden Aspekten beheben und damit umgehen:
Bestätigen Sie, ob die Bilddatei IPTC -Daten enthält.
Stellen Sie sicher, dass das Dateiformat JPEG ist, oder konvertieren Sie die Datei in JPEG -Format.
Überprüfen Sie die Lesen von Dateien, um sicherzustellen, dass PHP auf Bilddateien zugreifen kann.
Verwenden Sie GetImageSize (), um zu überprüfen, ob die Bilddatei beschädigt ist.
Verwenden Sie iptCParse () korrekt und übergebene Dateiinhalte anstelle von Pfaden.
Überprüfen und aktivieren Sie die EXIF -Erweiterung von PHP.
Reparieren Sie beschädigte Bilddateien.
Durch das Überprüfen und Anpassen von nacheinander sollte es in der Lage sein, das Problem der IPTCPARSE () -Regendat zu lösen, die ein leeres Array zurückgibt.