2013-01-22 64 views
0

我認爲這將是一個簡單的答案,但我無法弄清楚。PHP如何輸出動態圖像

我有一個使用fpdf和fpdi生成pdf的腳本。

如果我使用正常的圖像,然後PDF生成完美,但我想使用由動態生成的圖像的PHP。

$bc = new PrintBarcode('DARP CODE'); 
$bc->drawVoucher(); 
$src = $bc->getVoucher(); 

// image 
$src = $bc->getVoucher(); 

$pdf->Image($src, 22, 94, 100, 15); 

這給了錯誤:

FPDF error: Image file has no extension and no type was specified: Resource id #16

如果我做

$barcode = imagejpeg($src); 
$pdf->Image($barcode, 22, 94, 100, 15); 

大概是因爲imagejpeg實際輸出圖像,但如果JPEG圖像頭設置,因爲頭被設置圖像將顯示正常,所以我只是想弄清楚這樣做的正確方法。

如果更容易,我有一個單獨的腳本可以生成圖像,例如`printbarcode.php',但我不知道如何獲得該腳本的內容到這個函數中:

$ pdf-> Image($ barcode,22,94,100,15);

+0

也許'$ PDF - >圖像()'期望得到圖像路徑? –

+0

謝謝,但我希望使用圖像流,而不是必須在本地存儲和刪除生成的圖像,因爲每個圖像是唯一的,所以如果不止一個人在使用它時會引起混亂 – martincarlin87

+0

看起來你必須找到一個不同的PDF庫。文檔明確指出,您需要提供文件路徑或URI。 –

回答

0

從錯誤信息我猜想$pdf->Image()函數預計$src是一個文件的路徑。你傳遞的東西看起來像一個對象。

嘗試將圖像保存到磁盤並從那裏加載。您幾乎可以使用imagejpeg()功能 - 請參閱文檔on php.net。提供保存文件的路徑

imagejpeg($img, 'myfile.jpg', 90); // 90 denotes high quality 
$pdf->Image('myfile.jpg', 22, 94, 100, 15); 
... 
unlink('myfile.jpg'); // delete after 

或者在fpdf庫中查找以圖像資源爲參數的函數。

+0

謝謝,我希望能夠使用圖像流來避免保存和刪除文件,但我可能不得不使用每個人都建議的內容 – martincarlin87

+0

fpdf似乎不支持使用內存流,這是一種恥辱。在http://www.fpdf.de/downloads/addons/45/上有一個插件可以滿足你的需求。或者,您可以嘗試使用url功能生成圖像。 – Kami

+0

謝謝,這看起來很有前途,但似乎無法讓它工作...... – martincarlin87

0

您不需要PHP用來處理圖像的圖像處理程序。你需要的是圖像處理的實際結果,即結果文件。使用imagejpeg($img, '/path/to/some/tmp/dir/file.jpg');並將路徑交給您的$pdf->Image()呼叫。然後在創建PDF後,您可以安全地刪除臨時存儲的圖像,我想。

+0

謝謝,但我希望使用圖像流,而不是必須在本地存儲和刪除生成的圖像,因爲每個圖像是唯一的,所以如果不止一個人在使用它時會引起混亂 – martincarlin87

0

你必須做這樣的PHP的GD庫的幫助..

//Create a new image from file or URL 
$img_src = imagecreatefromjpeg($src); 

// Output the image 
imagejpeg($img_src); 

// Free up memory 
imagedestroy($img_src);