In unserer täglichen Entwicklung müssen wir häufig beurteilen, ob das Bild vorhanden ist. Wenn es nicht vorhanden ist, wird das Standardbild angezeigt.
getimagesize()-Funktion (empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Beherrschung)
getimagesize ist nicht Teil der GD-Erweiterung und kann von standardmäßig installiertem PHP verwendet werden. Sie können sich zunächst die Dokumentationsbeschreibung dieser Funktion ansehen:http://php.net/manual/zh/function.getimagesize.php
Wenn die angegebene Datei kein gültiges Bild ist, wird false zurückgegeben. Es gibt auch ein Feld, das das Dokument angibt Geben Sie die zurückgegebenen Daten ein. Wenn Sie es nicht verwenden, um die Größe der Datei zu ermitteln, sondern um festzustellen, ob es sich bei der hochgeladenen Datei um eine Bilddatei handelt, scheint dies eine sehr gute Lösung zu sein. Dies erfordert natürlich das Blockieren möglicher Warnungen. Der Code ist wie folgt geschrieben:
<?php $filesize = @getimagesize('/path/to/image.png'); if ($filesize) { do_upload(); } # 另外需要注意的是,你不可以像下面这样写: # if ($filesize[2] == 0) # 因为 $filesize[2] 可能是 1 到 16 之间的整数,但却绝对不对是0。
static void php_getimagesize_from_stream(php_stream *stream, zval **info, INTERNAL_FUNCTION_PARAMETERS){ ... itype = php_getimagetype(stream, NULL TSRMLS_CC); switch( itype) { ... } ... }static void php_getimagesize_from_any(INTERNAL_FUNCTION_PARAMETERS, int mode) { ... php_getimagesize_from_stream(stream, info, INTERNAL_FUNCTION_PARAM_PASSTHRU); php_stream_close(stream); } PHP_FUNCTION(getimagesize) { php_getimagesize_from_any(INTERNAL_FUNCTION_PARAM_PASSTHRU, FROM_PATH); }
Der begrenzte Platz hat einige Details verborgen. Jetzt wissen wir zwei Dinge aus dem obigen Code. Das reicht:
Die endgültige Verarbeitungsfunktion ist php_getimagesize_from_streamDie für die Bestimmung des Dateityps verantwortliche Funktion ist php_getimagetypeWerfen wir einen Blick auf die Implementierung von php_getimagetype:
PHPAPI int php_getimagetype(php_stream * stream, char *filetype TSRMLS_DC){ ... if (!memcmp(filetype, php_sig_gif, 3)) { return IMAGE_FILETYPE_GIF; } else if (!memcmp(filetype, php_sig_jpg, 3)) { return IMAGE_FILETYPE_JPEG; } else if (!memcmp(filetype, php_sig_png, 3)) { ... } }
Das obige ist der detaillierte Inhalt vonPHP ermittelt, ob ein Bild vorhanden ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!