我正在显示来自我的网络根目录的图像,如下所示:
header('Content-type:image/png');
readfile($fullpath);
Run Code Online (Sandbox Code Playgroud)
内容类型:image/png令我感到困惑.
其他人帮我解决了这个问题,但我注意到并非所有图像都是PNG.很多都是jpg或gif.
它们仍然成功显示.
有谁知道为什么?
pau*_*llb 59
最好的解决方案是读入文件,然后决定它是哪种图像并发送适当的标题
$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename,"."),1));
switch( $file_extension ) {
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpeg"; break;
case "svg": $ctype="image/svg+xml"; break;
default:
}
header('Content-type: ' . $ctype);
Run Code Online (Sandbox Code Playgroud)
(注意:JPG文件的正确内容类型是image/jpeg
)
ali*_*dil 14
有一个更好的原因来确定图像的类型.使用exif_imagetype
如果您使用此功能,您可以告诉图像的真实扩展名.
使用此函数文件名的扩展名完全无关紧要,这很好.
function set-header-content-type($file)
{
//Number to Content Type
$ntct = Array( "1" => "image/gif",
"2" => "image/jpeg", #Thanks to "Swiss Mister" for noting that 'jpg' mime-type is jpeg.
"3" => "image/png",
"6" => "image/bmp",
"17" => "image/ico");
header('Content-type: ' . $ntct[exif_imagetype($file)]);
}
Run Code Online (Sandbox Code Playgroud)
您可以从链接添加更多类型.
希望能帮助到你.