0

基本上我要做的就是将图像写入数据库。

据我了解 imagejpeg 函数 - 如果“字符串 $filename”未设置或为 NULL,则输出应该是纯图像数据。但事实并非如此,唯一的输出是“1”(真)......

如何在不先将图像存储在文件系统中并重新加载的情况下获取图像数据?

这是我的代码示例:

// If it is the right filetype.
if ($_FILES[$dom_element]['type'] == 'image/jpeg' || $_FILES[$dom_element]['type'] == 'image/pjpeg') {

    // Create the image recource.
    $image_image = imagecreatefromjpeg($_FILES[$dom_element]['tmp_name']);
}

// Resize the image.
imagecopyresampled($image_image_p, $image_image, 0, 0, 0, 0, $image_new_width, $image_new_height, $image_width, $image_height);

// Write the image in the database (does not work this way -> output = "1")
mysql_select_db("$db_announcement");
$sql = "UPDATE announcement
SET announcement_guest_image_data = '" . addslashes(imagejpeg($image_image_p, NULL, $settings_image_quality)) . "',
announcement_guest_image_exists = 'yes'
WHERE announcement_timestamp = '$timestamp' AND announcement_guest_mail = '$global_mail'";
$sql = mysql_query($sql);

// Delete the image recources.
imagedestroy($image_image);
imagedestroy($image_image_p);
4

2 回答 2

1

文档说明了$filename参数:

如果不设置或为NULL,将直接输出原始图像流。

关于返回值

成功时返回 TRUE,失败时返回 FALSE。

该函数将图像输出到标准输出。它没有return

您可以像这样从标准输出中捕获它:

ob_start();
imagejpeg(...);
$imageData = ob_get_clean();
于 2012-09-14T13:16:57.243 回答
0

我强烈建议您避免在数据库中存储二进制数据,例如图像。您可以简单地在表格上记录所有内容,包括图像名称、创建日期等,然后将该文件放入文件系统中。

我知道这不是您要寻找的答案,但我认为它可能会有所帮助。

于 2012-09-14T13:36:09.233 回答