PHP阅读破碎的图像

时间:2014-08-26 17:57:11

标签: php image gd

为了节省带宽,我在下载到用户之前缩放图像(我会自己缩放它们,但其他人正在上传它们):

function scaleIm($I){
    $file="{$I['dir']}/{$I['name']}.{$I['ext']}";
    $img=imagecreatefromjpeg($file);
    $i_x=imagesx($img);
    $i_y=imagesy($img);
    $di_x=155;
    $di_y=155;
    $d_i=imagecreatetruecolor($di_x, $di_y);
    imagecopyresampled($d_i,$img,0,0,0,0,$di_x,$di_y,$i_x,$i_y);
    ob_start();
    header("Content-type: image/jpeg");
    imagejpeg($d_i,NULL,100);
    imagedestroy($d_i);
    $i=ob_get_clean();
    return 'background-image:url(data:image/jpeg;base64,'.base64_encode($i).');';
}

由于我在一个响应中将所有图像打包在一起,因此所有图像都必须成功才能显示任何图像。当我的同事在一个不稳定的连接上上传一个特别大的图像时,我们冒着图像变成一半的风险。此时,整个页面都失败了。

我需要为损坏的图像写一个例外。我尝试过的退货条件:

if(!filesize($file))    //Doesn't work because a half-loaded file still has size

if(!file_exists($file))    //See above

if(!$img)    

最后一个看起来很有希望,但我认为失败点在$img=imagecreatefrom($jpeg)

0 个答案:

没有答案