我有一个功能,可以在飞行中制作网址图片的缩略图! 我总是传递给jpg类型的这个函数图像,但是当我传递带有“.jpg”扩展名的图像时会出现问题。但是当我尝试获取它的mime类型时,我发现这是“ application / octet-stream ”..在这个php page中,这个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";
}
}
答案 0 :(得分:1)
我刚才正在做同样的事情。
我正在使用finfo
测试一些图像,.gif,.jpeg,.png ......我发现你读取的mime类型取决于你用来读取文件的常量。更多!您可以从图像中读取application / octet-stream作为mimetype!并且该信息没有错。 查看:强>
如果使用不带常量的finfo_open():
<?php
$finfo = finfo_open();
$FileInfo = finfo_file($finfo, $tmp_name);
finfo_close($finfo);
你得到了你期望的mime类型:
如果.svg - &gt; HTML文档,ASCII文本,行很长,没有行终止符
如果是.jpg(来自手机相机) - &gt; JPEG图像数据,EXIF标准2.2
如果.gif(从油漆中保存) - &gt; GIF图像数据,版本89a,w x h
使用像FILEINFO_MIME_TYPE
这样的常量<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE, $mf); // $mf is a magic file
$FileInfo = finfo_file($finfo, $tmp_name);
finfo_close($finfo);
你有不同的价值:
if .svg - &gt;文本/纯
如果.jpg(来自您的手机相机) - &gt;应用/八位字节流
如果.gif(从油漆中保存) - &gt;应用/八位字节流
所以你必须测试你在测试mimetypes时读到的内容。见Fileinfo Predefined constants
希望有所帮助
答案 1 :(得分:0)
我们无法告诉您,因为application/octet-stream
是一种通用类型的二进制文件mime类型。它可以是一切。您可以在文件二进制内容上使用imagecreatefromstring
。但保持手指交叉;)。
这里的实际问题是getimagesize
独立于用于调整图像大小的GD库。所以它提供了关于GD本身无法处理的文件的信息。因此,您可以输出某种“不支持的图像类型”,直到您找到一些能够处理特定模仿或更好的图像类型的附加库。
参见:
答案 2 :(得分:-2)
对于application / octet-stream,您可以获取原始文件名并检查其扩展名。如果它的jpg你应该好好去