Php 如何处理图像';“s 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 =>

我有一个功能,使缩略图的网址图像的飞行! 我总是用jpg类型传递图像给这个函数,但是当我传递扩展名为“.jpg”的图像时,问题就出现了。但是当我尝试获取它的mime类型时,我发现它是“应用程序/octet流””。。在本例中,此mime类型指以下类型之一:

IMAGETYPE_JPC、IMAGETYPE_JPX、IMAGETYPE_JB2

我需要修改什么函数来处理此mime类型

注意^^^^^

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或更好的图像类型的附加库

另见:


对于应用程序/八位字节流,您可以获取原始文件名并检查其扩展名。如果是jpg,你应该很乐意去

我刚才也在做同样的事情

我正在测试一些图像,.gif,.jpeg,.png。。。使用
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);