2013-08-12 49 views
1

TCPDF:如何使用從MySQL數據庫檢索到的BLOB值在TCPDF中顯示圖像?如何使用BLOB值在TCPDF中顯示圖像

+1

在文件系統的可寫文件夾中生成臨時圖像並將圖像導入到PDF中。導入時,請刪除圖像。 –

+0

@MartyMcVry - TCPDF不需要。 OP只是沒有閱讀文檔;-) –

+0

@MartyMcVry刪除圖像後,你仍然會在PDF中查看圖像? – jned29

回答

3

example #9 - Image()

// Example of Image from data stream ('PHP rules') 
$imgdata = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABlBMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDrEX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg=='); 

// The '@' character is used to indicate that follows an image data stream and not an image file name 
$pdf->Image('@'.$imgdata); 

API documentation for Image()解釋了它的詳細信息:

$文件包含圖像或文件的 (字符串)名稱 '@' 字符 接着是圖像數據字符串。要鏈接圖像而不嵌入文檔 ,請在URL之前設置星號(即: *http://www.example.com/image.jpg)。已經阿爾瓦羅·岡薩雷斯TCPDF你回答

+0

看起來像base64_decode()可能沒有必要。 –

+0

@Chen PHP字符串當然可以保存二進制數據(這個例子也是這樣),但大多數文本編輯器不適合編輯二進制數據;-) –

0

由於可以通過圖像的Blob TCPDF::Image()但有一些主要的缺點:

TCPDF圖像緩存不工作的圖像塊。因此,如果您多次傳遞相同的圖像,TCPDF將消耗更多的內存。

如果您傳遞圖像blob TCPDF將其中一個寫入臨時文件。但它不檢查是否已經提供了相同的圖像blob。所以即使再次傳遞相同的圖像,它也會寫入新的臨時文件。這不僅會導致不必要的IO,還會將圖像緩存構建分解爲tcpdf。

長話短說:如果多次使用圖像,不要將圖像blob傳遞給tcpdf。將其保存到臨時文件並通過該文件。