2013-06-18 4 views
1

PHP Imagick()을 사용하여 크기를 조정하고 다운로드 할 때 이미지를 제공 할 때 종종 이미지가 잘립니다.PHP Imagick 다운로드시 이미지가 잘리는 경우가 있습니다.

이런 일이 발생하면 진단 할 수 없지만 문제가 발생하기에 충분합니다. 이 코드에서 $ file은 훨씬 더 큰 이미지 파일로 작은 다운로드를 주문하고 싶습니다. 무슨 일

if (file_exists($file)) { 

    $image = new Imagick(); 
    $image->setResolution(150,150); 
    $image->readImage($file); 
    $image->resizeImage(1275,0,Imagick::FILTER_LANCZOS,1); 
    $image->setImageCompression(Imagick::COMPRESSION_JPEG); 

    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename=download.'.$extension); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    echo $image; 
    exit; 

    } 

이며, 파일이 제대로 다운로드, 때로는 이미지가 잘립니다 시간의 일부 - 이미지의 상위 30 %가 바로 보이는 나머지는 단지 비어 있습니다. 따라서 파일 크기는 정확하지만 이미지 데이터 만 중간 정도입니다.

문제가 발생했을 수도 있지만 여전히 일관되게 발생하지는 않습니다. 즉, PDF, JPEG 및 PNG로 모두 동일한 작업을 수행하고 원본 확장이 무엇이든지 출력하는 것입니다.

제안 사항?

편집 : 아래를 참조하십시오. 감사!

답변

0

저는 바보입니다. $ 이미지가 아닌 $ Content의 길이가 길어졌습니다. $ file을 $ image로 변경했는데 정상적으로 작동합니다. Content-Length가 정확해야하거나 잘립니다.

Nevermind!

관련 문제