2014-06-23 78 views
1

我有一個腳本,當前需要JPEG輸入,將其保存到數據庫,將其複製到文件夾,然後重定向。但是,我被告知我們需要能夠在發生其他事情之前將EPS文件轉換爲JPEG格式。用Imagick將EPS轉換爲JPEG

這是我的腳本的增加的部分,似乎不工作:

$filename = $_FILES['file']['name']; 
$filedims = getimagesize($filename); 
$imagick = new Imagick(); 
$imagick->newImage($filedims[0], $filedims[1], "white"); 
$imagick->compositeimage($filename, Imagick::COMPOSITE_OVER, 0, 0); 
$imagick->setImageFormat("jpg"); 
$imagick->writeImage($filename); 

Imagick Documentation,我看到了compositeimage()第一個參數應該是一個「Imagick對象持有的複合圖像「,但我不確定在這一點上我的$filename是?

當談到面向對象的PHP和->選擇器時,我完全不知所措,但希望這裏有人能幫我弄清楚發生了什麼問題。

遇到的錯誤

Warning: getimagesize(fast-track_logo_text.eps): failed to open stream: No such file or directory in /example.com/upload-company-logo.php on line 36

你如何獲得,如果getimagesize()的EPS文件的尺寸不工作?這是必要的,所以我知道用newImage()創建畫布的大小。

Catchable fatal error: Argument 1 passed to Imagick::compositeimage() must be an instance of Imagick, string given in /example.com/upload-company-logo.php on line 49

這看起來是什麼,我認爲這個問題將是,用我的$filename變量。如果我調整我的代碼如下,雖然:

$imagick = new Imagick($filename); 
... 
$imagick->compositeImage($imagick, Imagick::COMPOSITE_OVER, 0, 0); 
... 

我得到一個新的,可怕的前瞻性錯誤:

Fatal error: Uncaught exception 'ImagickException' with message 'unable to open image 'fast-track_logo_text.eps': No such file or directory @ blob.c/OpenBlob/2480' in /example.com/upload-company-logo.php:47 Stack trace: #0 /example.com/upload-company-logo.php(47): Imagick->__construct('fast-track_logo...') #1 {main} thrown in /example.com/upload-company-logo.php on line 47

+0

Apache的錯誤日誌可以給你一些洞察可能發生 – sjagr

+0

任何錯誤,找到並加入我的錯誤,最初的問題。 – mpdc

+0

如果我的答案已解決您的問題,請將其標記爲已接受。否則讓我知道如果你仍然有問題 – sjagr

回答

0

當您上傳文件時,PHP存儲在/tmp/目錄文件在隨機生成的文件名下,以避免與其他文件的衝突。因此,您必須使用臨時路徑訪問該文件才能訪問/移動/操作它。

要做到這一點,改變$_FILES['file']['name']$_FILES['file']['tmp_name']

不要忘了文件的某個地方在某些時候更持久的移動在你的腳本,以及!腳本完成執行後,/tmp/文件夾中的任何已創建的文件都將被刪除。

欲瞭解更多信息,你應該看看PHP的文檔約handling file uploads

+0

不幸的是,這並沒有解決的事情。明天當我回到辦公室時,我會讓你知道我重寫的代碼,並讓你知道我現在在哪裏。 – mpdc

+0

@mpdc好吧,讓我發佈。當你回到辦公室時,嘗試做一個'var_dump($ _ FILES)',所以我知道你要發送給Imagick – sjagr