日々の開発では、ピクチャが存在するかどうかを判断する必要があり、存在する場合は表示され、存在しない場合はデフォルトのピクチャが表示されます。
getimagesize() 関数 (推奨学習: PHP プログラミングの入門から習熟まで )
getimagesize 関数は GD 拡張機能の一部ではないため、標準でインストールされた PHP で使用できます。まず、この関数のドキュメントの説明を確認してください:http://php.net/manual/zh/function.getimagesize.php
指定されたファイルが有効な画像ではない場合、false が返されます。ドキュメントを示すフィールドもあります。返されたデータを入力します。ファイルのサイズを取得するためにこれを使用するのではなく、アップロードされたファイルが画像ファイルであるかどうかを判断するために使用する場合、これは非常に良い解決策であると思われます。もちろん、これには、起こり得る警告をシールドする必要があります。コードは次のようになります:
<?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); }
スペースが限られているため、いくつかの詳細が隠されています。上記のコードから 2 つのことがわかります。これで十分です:
最終処理関数は php_getimagesize_from_streamファイル タイプを決定する関数は php_getimagetype実装を見てみましょう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)) { ... } }
以上がphpは画像が存在するかどうかを判断しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。