Heim >Backend-Entwicklung >PHP-Problem >So ermitteln Sie in PHP, ob eine Datei ein Bild ist

So ermitteln Sie in PHP, ob eine Datei ein Bild ist

藏色散人
藏色散人Original
2020-10-07 00:06:077565Durchsuche

So 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.

Vorwort

So ermitteln Sie in PHP, ob eine Datei ein Bild istWenn 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 = &#39;.gif|.jpeg|.png|.bmp&#39;; //定义检查的图片类型
 if(file_exists($filename))
 {
  if (($info = @getimagesize($filename))
   return 0;
   
  $ext = image_type_to_extension($info[&#39;2&#39;]);
  return stripos($types,$ext);
 }
 else
 {
  return false;
 }
}
  
if(isImage(&#39;isimg.txt&#39;)!==false)
{
 echo isImage(&#39;1.jpg&#39;);
 echo &#39;是图片&#39;;
}
else
{
 echo &#39;不是图片&#39;;
}
?>
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[&#39;chars1&#39;].$strInfo[&#39;chars2&#39;]); 
 $fileType = &#39;&#39;; 
 
 if($typeCode == 255216 /*jpg*/ || $typeCode == 7173 /*gif*/ || $typeCode == 13780 /*png*/) 
 { 
  return $typeCode; 
 }
 else
 { 
  // echo &#39;"仅允许上传jpg/jpeg/gif/png格式的图片!&#39;; 
  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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn