2014-06-29 51 views
6

我在我的MAMP開發環境中安裝了Imagemagick擴展,並且PHP信息顯示正確安裝了imagemagick。不過,我收到以下異常:Imagemagick無法讀取文件(MAMP)

 
PHP Fatal error: Uncaught exception 'ImagickException' with message 
'Unable to read the file: 
/Applications/MAMP/htdocs/image/demo.pdf' 
in /Applications/MAMP/htdocs/image/index.php:8 
Stack trace: 
#0 /Applications/MAMP/htdocs/image/index.php(8): Imagick->__construct('/Applications/M...') 
#1 {main} 
    thrown in /Applications/MAMP/htdocs/image/index.php on line 8 

源代碼:

 
$pdf_file = '/Applications/MAMP/htdocs/image/demo.pdf'; 

echo $pdf_file; 

$save_to = '/Applications/MAMP/htdocs/image/demo.jpg'; 

$img = new imagick($pdf_file); 

//reduce the dimensions - scaling will lead to black color in transparent regions 
$img->scaleImage(800,0); 

//set new format 
$img->setImageFormat('jpg'); 

//save image file 
$img->writeImages($save_to, false); 

Screen short- imagemagick installed on MAMP

編輯1:

我使用brew管理軟件包。

我MAMP配置:

Imagick延伸(php.ini中):

 
[imagick] 
extension="/usr/local/Cellar/php55-imagick/3.1.0RC2/imagick.so" 

envvars中:

路徑:

/Applications/MAMP/Library/bin/envvars 

內容:

 
#if test "x$DYLD_LIBRARY_PATH" != "x" ; then 
# DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH" 
#else 
    #DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib" 
#fi 
#export DYLD_LIBRARY_PATH 


#DYLD_LIBRARY_PATH="/Applications/MAMP/bin/ImageMagick/ImageMagick-6.8.9/lib:/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH" 
#export DYLD_LIBRARY_PATH 

+0

是你確定這個文件存在(這是正確的路徑)?你有沒有嘗試傳遞PDF而不是圖像給構造函數?有沒有錯誤?這也很可能需要使用'$ img = new imagick(realpath($ pdf_file));'或者你沒有安裝ghostscript庫 –

+0

也試試相對路徑('$ _SERVER ['DOCUMENT_ROOT']。'/ image/demo.pdf'')。 – klugerama

+0

@MarcinNabiałek我檢查了路徑,它的正確性。我不確定幽靈腳本。但是,我可以通過命令行隱藏圖像。 – Anam

回答

4

首先檢查您的PDF文件路徑:

if (! is_readable('/Applications/MAMP/htdocs/image/demo.pdf')) { 
    echo 'file not readable'; 
    exit(); 
} 

如果文件是可讀的,看看這個:https://github.com/delphian/drupal-convert-file/wiki/Installing-ImageMagick-on-Mac-OSX-for-PHP-and-MAMP

+1

你的回答是正確的,+1。不要忘記提及路徑必須是**本地系統路徑**。當上面的函數碰到'echo'時,imagick將永遠不會工作。 – GuyT

+0

文件是可讀的,我遵循了許多教程,包括您提供的鏈接。我可以從命令行轉換PDF到圖像,但不使用PHP擴展。 – Anam

+0

最後一次嘗試:有多個pdf規格(版本)。Perhabs可以嘗試查找demo.pdf的當前pdf版本並將其轉換爲其他版本。您是否嘗試過其他文件,而不是demo.pdf? –

1

http://www.php.net/manual/en/imagick.construct.php

apprently使用PDF文件時,我們可以指定要使用的頁面,該頁面可能反過來幫助imageMagick正確使用pdf文件時構造

$pdf_file = '/Applications/MAMP/htdocs/image/demo.pdf'; 
$img = new Imagick($pdf_file.'[0]'); 
//[0] indicate the number of the wanted page