2014-04-19 2 views
0

품질 저하없이 여러 pdf 파일을 jpeg 이미지로 변환하는 가장 빠른 방법을 찾으려고합니다.복수 페이지 pdf를 jpg 이미지로 변환하는 가장 빠른 방법

$this->imagick = new \Imagick(); 
    $this->imagick->setresolution(300,300); 
    $this->imagick->readimage($this->uploadPath . '/original/test.pdf'); 
    $num_pages = $this->imagick->getNumberImages(); 

    for($i = 0;$i < $num_pages; $i++) { 

     $this->imagick->setIteratorIndex($i); 
     $this->imagick->setImageFormat('jpeg'); 
     $this->imagick->readimage($asset); 

     // i need the width, height and filename of each image to add 
     // to the DB 
     $origWidth = $this->imagick->getImageWidth(); 
     $origHeight = $this->imagick->getImageHeight(); 
     $filename = $this->imagick->getImageFilename(); 


     $this->imagick->writeImage($this->uploadPath . '/large/preview-' . $this->imagick->getIteratorIndex() . '.jpg'); 

     $this->imagick->scaleImage($origWidth/2, $origHeight/2); 
     $this->imagick->writeImage($this->uploadPath . '/normal/preview-' . $this->imagick->getIteratorIndex() . '.jpg'); 

     //add asset to the DB with the given width, height and filename ... 
    } 

이 해상도가 너무 커서 부분적으로 있기 때문에, 아주 느린 네가하지만 내가 추가 해달라고이며, 이미지의 텍스트가 매우 품질이 좋지 : 나는 다음과 같은 코드가 있습니다. 또한 이미지를 먼저 저장하고 파일의 작은 버전을 저장한다는 사실은 아마도 매우 최적화되지 않았을 것입니다.

누구나이 작업을 수행하는 데 더 좋은 방법이 있습니까? 어쩌면 고스트 스크립트만으로도 될까요?

최소 요구 사항은 변환 된 이미지의 2 가지 버전이 필요하다는 것입니다. 실제 크기 버전과 절반 크기의 버전. 그리고 난 너비와 높이와 파일 이름을 데이터베이스에 추가해야합니다.

+0

"이미지의 텍스트 품질이 매우 좋지 않습니다." - 제 대답을 확인하십시오 http://stackoverflow.com/a/23144243/778719 – Danack

답변

1

"-sDEVICE = jpeg -sOutputFile = out % d.jpg"로 설정하면 Ghostscript를 사용할 수 있으며 각 페이지는 별도의 파일에 기록됩니다.

JPEG는 품질 손실없이 JPEG로 렌더링 할 수 없으므로 JPEG는 손실 압축 방식입니다. 대신 PNG 또는 TIFF와 같은 무손실 형식을 사용하는 것이 고려 되었습니까?

서로 다른 크기로 동일한 이미지를 얻으려면 파일을 다른 해상도로 두 번 렌더링해야하며 Ghostscript에서 '-r'을 사용하여 해상도를 설정하십시오. 너비와 높이는 이미지 파일에서 쉽게 읽을 수 있습니다. 또는 pdf_info.ps를 사용하여 각 페이지 크기를 얻을 수 있습니다. PDF 파일에는 크기가 다른 여러 페이지가 포함될 수 있습니다. 모두가 같은 크기가 될 것으로 기대하지 않기를 바랍니다.

+0

Image Magick은 실제로 Ghostscript를 사용하여 PDF를 렌더링합니다. 따라서 Ghostscript로 바로 가면 동일한 출력이 나오지만 더 빨라질 수 있습니다. 그리고 네, PNG를 많이 사용합니다. – Danack

+0

출력으로 png를 사용하지 않는 이유는 속도가 png로 변환하는 것이 느린로드 인 것 같습니다. – vincent

+0

PNG 드라이버의 성능은 JPEG 드라이버와 비슷해야하지만 테스트하지 않았습니다 그것. – KenS

관련 문제