发送到浏览器时,图像被奇怪地裁剪

时间:2013-10-19 10:25:28

标签: php image header

我正在尝试将图像发送到客户端,如下所示:

public function saveAction()
{
    if(!isset($_SESSION)) session_start();

    if(isset($_SESSION['id'])) {    

        $em = $this->getDoctrine()->getEntityManager();
        $image = $em->getRepository('AcmeHomeBundle:Image')->find($_SESSION['id']);

        // open the file in a binary mode
        $fpass = fopen($image->getPath(), 'rb');

        header("Content-Type: image/".$image->getFormat());
        header("Content-Length: ".$image->getSize());
        header('Content-Disposition: attachment; filename="image.'.$image->getFormat().'"');

        // dump the picture and stop the script
        fpassthru($fpass);
        exit;
    }
}

但有时会裁剪发送的图像。但是,原始图像是正确的。有什么可能出错的建议吗?

以下是一个例子:

原始图片:

original

已发送图片:

weirdly cropped image

1 个答案:

答案 0 :(得分:1)

似乎图片只下载了一半或半发送

看看内容大小是不是太小了?检查fpassthru的输出是否与图像大小匹配?

检查日志中与时间或内存有关的错误