使用PDFlib(PHP)将MySQL中的图像blob加载到PDF中

时间:2017-11-01 13:17:57

标签: php mysql image blob pdflib

我想从MySQL获取我的图像blob并将其粘贴到带有PDFlib的PDF中。 如何转换blob以便将其用作PDFlib的普通图像?

这是我此刻尝试这样做的方式。

$img = imagecreatefromstring($qra['photo']); //$qra['photo'] is the mysql blob field

// Loading the image with PDFlib (this code is already tested with a normal image src like /images/example.jpg and works)
$image = $p->load_image("auto", $img, "");
$p->fit_image($image, 10, 10, "boxsize={50 50} position=center fitmethod=meet");

不知何故,使用imagecreatefromstring无法正确创建图像,因为我收到了该代码的错误。

如何正确获取blob图像以便我可以使用它(将它保存在服务器上,因为tmp图像也可以工作)?

2 个答案:

答案 0 :(得分:1)

我认为这样的事情对你有用:

<?php

$img = imagecreatefromstring($qra['photo']); //$qra['photo'] is the mysql blob field

ob_start(); // capture the image from the blob
imagepng($img); //  Output a PNG image to either the browser or a file
$img = ob_get_clean(); // Get current buffer contents and delete current output buffer

// img should now be png resource

// Loading the image with PDFlib (this code is already tested with a normal image src like /images/example.jpg and works)
$image = $p->load_image("auto", $img, "");
$p->fit_image($image, 10, 10, "boxsize={50 50} position=center fitmethod=meet");

答案 1 :(得分:1)

这更简单。我希望你的图像作为存储在数据库中的字节数组。所以它应该很简单,只需将BLOB字段检索为字符串并使用PVF(PDFlib虚拟文件系统)。 使用这种技术,您可以为变量指定一个名称,然后可以在load_image()调用中使用该名称。

这在starter_pvf.php示例中进行了演示,该示例包含在PDFlib PHP包以及PDFlib Coobkook中: http://www.pdflib.com/pdflib-cookbook/general-programming/starter-pvf/php-starter-pvf/

样本只是从光盘读取图像数据,但这应该类似于从数据库中提取

# We just read some image data from a file; to really benefit
# from using PVF read the data from a Web site or a database instead

$imagedata = read_file("../input/PDFlib-logo.tif");
$p->create_pvf("/pvf/image", $imagedata, "");

# Load the image from the PVF
$image = $p->load_image("auto", "/pvf/image", "");