Php 如何处理图像';“s mime类型”;应用程序/八位字节流“;?
我有一个功能,使缩略图的网址图像的飞行! 我总是用jpg类型传递图像给这个函数,但是当我传递扩展名为“.jpg”的图像时,问题就出现了。但是当我尝试获取它的mime类型时,我发现它是“应用程序/octet流””。。在本例中,此mime类型指以下类型之一: IMAGETYPE_JPC、IMAGETYPE_JPX、IMAGETYPE_JB2 我需要修改什么函数来处理此mime类型 注意^^^^^Php 如何处理图像';“s mime类型”;应用程序/八位字节流“;?,php,thumbnails,mime-types,gd2,Php,Thumbnails,Mime Types,Gd2,我有一个功能,使缩略图的网址图像的飞行! 我总是用jpg类型传递图像给这个函数,但是当我传递扩展名为“.jpg”的图像时,问题就出现了。但是当我尝试获取它的mime类型时,我发现它是“应用程序/octet流””。。在本例中,此mime类型指以下类型之一: IMAGETYPE_JPC、IMAGETYPE_JPX、IMAGETYPE_JB2 我需要修改什么函数来处理此mime类型 注意^^^^^ function thumb($path,$width,$height) // $path =>
function thumb($path,$width,$height) // $path => image url
{
$file_dimensions = getimagesize($path);
$file_type = image_type_to_mime_type($file_dimensions[2]);
list($Cwidth, $Cheight) = getimagesize($path);
if ($file_type=='image/jpeg'||$file_type=='image/pjpeg'){
// Load
$thumb = imagecreatetruecolor($width, $height);
$source = imagecreatefromjpeg($path);
// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $width, $height, $Cwidth, $Cheight);
header('Content-Type: image/jpeg');
imagejpeg($thumb);
}
else if ($file_type=='application/octet-stream')
{
// ^^^^^ what I should write here
}
else
{
echo "Not supported type";
}
}
我们不能告诉您,因为
application/octet-stream
是一种二进制文件mime类型的通用类型。它可以是一切。您可以尝试在文件上添加二进制内容。但是祈祷好运
这里的实际问题是,它独立于用于调整图像大小的GD库。因此,它提供了有关GD本身无法处理的文件的信息。因此,您可以只输出某种“不受支持的图像类型”,直到找到能够处理特定mime或更好的图像类型的附加库
另见:
finfo
我发现您读取的mime类型取决于您用于读取文件的常量。更多从图像中读取应用程序/八位字节流作为mimetype!这些信息并没有错请参阅:
如果使用不带常量的finfo_open():
<?php
$finfo = finfo_open();
$FileInfo = finfo_file($finfo, $tmp_name);
finfo_close($finfo);
是,因为GD库不支持打开(、调整大小和输出)这些格式。或者,您得到的mime类型主要是提供信息的。您必须使用其他能够处理格式的图像库。对不起,我不是图像处理专家。。你能告诉我“其他图像库可以处理格式”吗?对不起,我不能告诉你。如果您想了解更多信息,您应该在问题中添加$file\u dimensions[2]
(mime类型旁边)的实际值。如前所述,mime类型实际上是通用的,因此更有趣的是图像类型。任何被否决的人,也应该添加他的观点。这对我来说非常有效。我会投反对票,我会告诉你为什么。php有一个设置,用于确定最大post大小设置,但小于php允许在内存中使用的总空间量。例如:post\u max\u size='2m'
和memory\u limit=“128M”
将导致通过流而不是简单的图像/jpeg提供图像。这是因为在上传整个图像之前,它会将图像分块提供服务。
<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE, $mf); // $mf is a magic file
$FileInfo = finfo_file($finfo, $tmp_name);
finfo_close($finfo);