Heim >Backend-Entwicklung >PHP-Problem >So ermitteln Sie in PHP, ob eine Datei ein Bild ist
VorwortSo bestimmt PHP, ob eine Datei ein Bild ist: 1. Verwenden Sie die Funktion getimagesize, um die Bildinformationen abzurufen, und treffen Sie dann eine Beurteilung. 2. Lesen Sie die ersten 2 Bytes des Bildes und treffen Sie dann eine Beurteilung die exif_imagetype-Funktion zur Beurteilung. 🔜 Über die Funktion habe ich nach relevanten Informationen gesucht und mehrere Methoden gefunden, darunter die Verwendung der Funktion getimagesize zum Abrufen von Bildinformationen und das anschließende Urteilen oder Lesen der ersten 2 Bytes des Bildes.
Wenn wir im Webdesign ein Bild benötigen, erhalten wir normalerweise den Dateinamen eines Bildes. Anhand des Dateinamens lässt sich nicht erkennen, ob es sich bei der Datei um eine Bilddatei handelt. Manche Leute denken vielleicht, dass sie anhand des Suffixnamens urteilen können. Vergessen Sie nicht, dass der Dateisuffixname nach Belieben geändert werden kann. Darüber hinaus werden Dateiformate unter Linux-Systemen nicht durch Suffixe unterschieden. Wenn Sie naiv glauben, dass Sie Bilder anhand von Suffixnamen unterscheiden können, wissen Sie beim Auftreten eines Fehlers möglicherweise nicht einmal, wo der Fehler liegt. Wenn beispielsweise eine nervige Person eine Textdatei in „background.jpg“ ändert und sie Ihnen zur Verwendung überlässt, denken Sie möglicherweise einfach, dass das Bild beschädigt ist, erwarten aber niemals, dass es sich nur um eine Textdatei handelt.
Um unnötige Probleme zu vermeiden, sollten Sie beim Erstellen eines Bildes richtig beurteilen, ob es sich bei der Datei tatsächlich um eine Bilddatei handelt. Drei Beurteilungsmethoden sind hier zusammengefasst. Freunde in Not können gemeinsam einen Blick darauf werfen. Methode 1
Verwenden Sie die Funktion getimagesize, um die Bildinformationen abzurufen, und fällen Sie dann eine Beurteilung: <?php # Script -- isimg.php
/* Author @ Huoty
* Date @ 2015-11-24 16:59:26
* Brief @
*/
function isImage($filename)
{
$types = '.gif|.jpeg|.png|.bmp'; //定义检查的图片类型
if(file_exists($filename))
{
if (($info = @getimagesize($filename))
return 0;
$ext = image_type_to_extension($info['2']);
return stripos($types,$ext);
}
else
{
return false;
}
}
if(isImage('isimg.txt')!==false)
{
echo isImage('1.jpg');
echo '是图片';
}
else
{
echo '不是图片';
}
?>
Methode 2
Lesen Sie die ersten 2 Bytes des Bildes und beurteilen Sie dann, ob es sich um ein Bild handelt:
<?php # Script -- isimg2.php /* Author @ Huoty * Date @ 2015-11-25 16:42:38 * Brief @ */ //判断上传的是不是图片 function isImg($fileName) { $file = fopen($fileName, "rb"); $bin = fread($file, 2); // 只读2字节 fclose($file); $strInfo = @unpack("C2chars", $bin); $typeCode = intval($strInfo['chars1'].$strInfo['chars2']); $fileType = ''; if($typeCode == 255216 /*jpg*/ || $typeCode == 7173 /*gif*/ || $typeCode == 13780 /*png*/) { return $typeCode; } else { // echo '"仅允许上传jpg/jpeg/gif/png格式的图片!'; return false; } } if (isImg("1.jpg")) { echo "是图片"; } else { echo "不是图片"; } ?>
Methode 3
Die letzte Methode besteht darin, die Funktion exif_imagetype zu verwenden, mit der der Typ eines Bildes bestimmt wird. Diese Methode ist einfacher. Lesen Sie die ersten Bytes eines Bildes und überprüfen Sie seine Signatur. Gibt eine entsprechende Konstante zurück, wenn eine passende Signatur gefunden wird, andernfalls wird FALSE zurückgegeben. Der Rückgabewert ist derselbe wie der Wert an Index 2 im von getimagesize() zurückgegebenen Array, diese Funktion ist jedoch viel schneller.
Die Rückgabewertkonstante dieser Funktion ist wie folgt definiert:
1 IMAGETYPE_GIF 2 IMAGETYPE_JPEG 3 IMAGETYPE_PNG 4 IMAGETYPE_SWF 5 IMAGETYPE_PSD 6 IMAGETYPE_BMP 7 IMAGETYPE_TIFF_II(Intel 字节顺序) 8 IMAGETYPE_TIFF_MM(Motorola 字节顺序) 9 IMAGETYPE_JPC 10 IMAGETYPE_JP2 11 IMAGETYPE_JPX 12 IMAGETYPE_JB2 13 IMAGETYPE_SWC 14 IMAGETYPE_IFF 15 IMAGETYPE_WBMP 16 IMAGETYPE_XBM
Beispiel:
<?php # Script -- isimg3.php /* Author @ Huoty * Date @ 2015-11-25 16:53:04 * Brief @ */ $mimetype = exif_imagetype("1.jpg"); if ($mimetype == IMAGETYPE_GIF || $mimetype == IMAGETYPE_JPEG || $mimetype == IMAGETYPE_PNG || $mimetype == IMAGETYPE_BMP) { echo "是图片"; } ?>
Das obige ist der detaillierte Inhalt vonSo ermitteln Sie in PHP, ob eine Datei ein Bild ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!