具有故障文件的Imagecreatefromjpeg

时间:2015-01-13 01:01:54

标签: php image-processing jpeg gd tiff

我正在编写一个脚本来调整大小并裁剪上传的图像。

所有有效文件都可以... 但是我的一些访问者正在尝试上传无效的访问者...例如文件扩展名为 jpg ,但实际上是 tiff 文件..上传文件的扩展名看起来 gif ,但在其exif细节中写道'它是一个jpg '等等..

你可以想象,imagecreatefromXX()函数在这种情况下都是错误的(它不是一个有效的jpg等)..

你有什么想法,我怎么能解决这个问题?

我该如何修改我最近的代码?

switch($type) {
    case 'gif':
    $img = imagecreatefromgif($source);
    break;
    case 'jpg':
    case 'JPEG':
    case 'jpeg':
    $img = imagecreatefromjpeg($source);
    break;
    case 'png':
    $img = imagecreatefrompng($source);
    break;  
}

1 个答案:

答案 0 :(得分:1)

你最好的选择可能是修改设置$ type的代码,而不是你共享的代码(虽然John Conde建议让默认情况好一些),并使用类似exif_imagetype的东西(你的问题建议可能已经在发挥作用)来确定类型,而不是信任扩展(在编写文件时你甚至可能想要改变为适当的类型):扩展是用户提供的数据,因此,最少可能准确和/或有用。

e.g。

$type = exif_imagetype($source);
switch ($type){
     case IMAGETYPE_GIF:
             $img = imagecreatefromgif($source);
             break;
     case IMAGETYPE_JPG:
             $img = imagecreatefromjpeg($source);
             break;
     case IMAGETYPE_PNG:
         ... etc ...

     default:
         //Fail Gracefully
 }