如何使用BLOB值在TCPDF中显示图像

时间:2013-08-12 09:50:25

标签: php mysql tcpdf

TCPDF:如何使用从MySQL数据库中检索到的BLOB值在TCPDF中显示图像?

3 个答案:

答案 0 :(得分:6)

来自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)。

答案 1 :(得分:0)

正如ÁlvaroGonzálezTCPDF已经回答的那样,您可以将图像blob传递给TCPDF::Image(),但这有一些主要缺点:

TCPDF图像缓存不适用于图像blob。因此,如果多次传递相同的图像,TCPDF会消耗更多的内存。

如果传递图像blob,TCPDF会将其写入临时文件。但它不会检查是否已提供相同的图像blob。因此,即使再次传递相同的图像,它也会写入新的临时文件。这不仅会导致不必要的IO,还会将图像缓存构建到tcpdf中。

长话短说:如果多次使用图像,请不要将图像blob传递给tcpdf。将其保存到临时文件并传递该文件。

答案 2 :(得分:0)

我发现许多 php TCPDF库用户大多处于关于mysqli数据库的两难境地,让我们遵循以下快速指南

  1. 准备好TCPDF配置,使用文本编辑器
  2. 开始工作
  3. 打开您的php文件,该文件将用于加载生成的pdf文档
  4. 包括关注者
  
  1. 按如下所示建立数据库连接
  

$ sql =“ SELECT * FROM成员WHERE id ='”。$ _ SESSION ['user']。“'”;   $ query = $ conn-> query($ sql); $ user =(!empty($ user ['photo']))?   'images /'.$ user ['photo']:'images / profile.jpg'$ user =   $ query-> fetch_assoc();

  1. 包括所有pdf参数,以在浏览器上设置pdf环境

    //创建新的PDF文档

  

$ pdf =新的TCPDF(PDF_PAGE_ORIENTATION,PDF_UNIT,PDF_PAGE_FORMAT,   true,'UTF-8',false);

     

//设置文档信息$ pdf-> SetCreator(PDF_CREATOR);   $ pdf-> SetAuthor('Nicola Asuni'); $ pdf-> SetTitle('TCPDF Example 009');   $ pdf-> SetSubject('TCPDF Tutorial'); $ pdf-> SetKeywords('TCPDF,PDF,   例如测试,指南');

     

//设置默认标题数据$ pdf-> SetHeaderData(PDF_HEADER_LOGO,   PDF_HEADER_LOGO_WIDTH,PDF_HEADER_TITLE。 009',PDF_HEADER_STRING);

     

//设置页眉和页脚字体   $ pdf-> setHeaderFont(Array(PDF_FONT_NAME_MAIN,``,   PDF_FONT_SIZE_MAIN)); $ pdf-> setFooterFont(Array(PDF_FONT_NAME_DATA,   '',PDF_FONT_SIZE_DATA));

     

//设置默认的等宽字体   $ pdf-> SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

     

//设置边距$ pdf-> SetMargins(PDF_MARGIN_LEFT,PDF_MARGIN_TOP,   PDF_MARGIN_RIGHT); $ pdf-> SetHeaderMargin(PDF_MARGIN_HEADER);   $ pdf-> SetFooterMargin(PDF_MARGIN_FOOTER);

     

//设置自动分页符$ pdf-> SetAutoPageBreak(TRUE,   PDF_MARGIN_BOTTOM);

     

//设置图像比例因子$ pdf-> setImageScale(PDF_IMAGE_SCALE_RATIO);

     

//设置一些与语言相关的字符串(可选),如果   (@file_exists(dirname( FILE )。'/ lang / eng.php')){       require_once(dirname( FILE )。'/ lang / eng.php');       $ pdf-> setLanguageArray($ l); }

     

// --------------------------------------------- ----------------------

     

//添加页面$ pdf-> AddPage();

     

//设置JPEG质量$ pdf-> setJPEGQuality(75);

  1. 调用图像参数
  

$ x = 165; $ y = 28; $ w = 50; $ h = 50; //调整大小的图片示例   $ pdf-> Image('images /'.$ voter ['photo']。“”,$ x,$ y,$ w,$ h,'JPG','');

  1. $ x表示水平填充,而$ y表示垂直填充,$ w表示宽度,$ h表示高度。

  2. 设置您的输出

  

$ pdf-> Output('adding_from_Myqli_database.pdf','I');

  1. 使用
  2. 关闭您的php标签
  

?>

  1. 希望您从问题中学到的东西