Dans notre développement quotidien, nous devons souvent juger si l'image existe. Si elle existe, elle sera affichée. Si elle n'existe pas, l'image par défaut sera affichée.
Fonction getimagesize() (apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)
getimagesize ne fait pas partie de l'extension GD et peut être utilisée par PHP installé en standard. Vous pouvez d'abord jeter un oeil à la description de la documentation de cette fonction :http://php.net/manual/zh/function.getimagesize.php
Si le fichier spécifié n'est pas une image valide, false sera renvoyé Il y a aussi un champ indiquant le document. saisissez les données renvoyées. Si vous ne l'utilisez pas pour obtenir la taille du fichier mais que vous l'utilisez pour déterminer si le fichier téléchargé est un fichier image, cela semble être une très bonne solution. Bien sûr, cela doit bloquer d'éventuels avertissements. le code est écrit comme ceci :
<?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); }
L'espace limité a caché certains détails. Nous savons maintenant deux choses du code ci-dessus. Cela suffit :
La fonction de traitement final est php_getimagesize_from_streamLa fonction chargée de déterminer le type de fichier est php_getimagetypeJetons un coup d'œil à l'implémentation de 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)) { ... } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!