Zusammenfassung der Methoden zur Verwendung von PHP, um festzustellen, ob es sich bei einer Datei um ein Bild handelt

迷茫
Freigeben: 2023-03-05 10:24:01
Original
4000 Leute haben es durchsucht

Um festzustellen, ob es sich bei einer Datei um ein Bild handelt, wurden mehrere Methoden gefunden, indem nach relevanten Informationen gesucht wurde, einschließlich der Verwendung der Funktion getimagesize zum Abrufen von Bildinformationen und der anschließenden Beurteilung oder dem Lesen der ersten 2 Bytes des Bildes. Werfen wir einen Blick auf die ausführliche Einführung weiter unten.

Vorwort

Wenn wir im Webdesign ein Bild benötigen, erhalten wir normalerweise den Dateinamen eines Bildes. Es ist nicht möglich, anhand des Dateinamens zu 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 Bildinformationen abzurufen, und treffen 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;;
}
?>
Nach dem Login kopieren

Methode 2

Lesen Sie die ersten 2 Bytes des Bildes und bestimmen 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 "不是图片";
}
?>
Nach dem Login kopieren

Methode 3

Die letzte Methode ist die Verwendung der Funktion exif_imagetype, 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 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
Nach dem Login kopieren
<?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 "是图片";
}
?>
Nach dem Login kopieren

Zusammenfassung

Oben geht es darum, dass PHP beurteilt, ob Eine Datei ist ein Bild. Das ist alles. Ich hoffe, dass der Inhalt dieses Artikels für alle beim Erlernen oder Verwenden von PHP hilfreich sein kann. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!