【问题标题】:How can I display thumbnails from Blob data如何显示 Blob 数据的缩略图
【发布时间】:2014-05-22 15:00:22
【问题描述】:

我是 php 新手,我正在尝试建立一个照片网站。我已经设法让上传功能正常工作(作为 blob 发送到数据库并使用自定义 url 显示它)。现在,我想检索这个 blob 数据并自动为其制作缩略图。不幸的是,我只看到带有我指定宽度和高度的黑色背景的画布格式。有人能指出我正确的方向吗?

get_thumb_function.php:

// db_connect
include 'databaseconnection.php';

// get id
$id = $_GET['id'];

// select image from id
$query = mysqli_query($db,"SELECT * FROM images WHERE id='$id'");

$rij = mysqli_fetch_array($query);

// content image
$content = $rij['image']; 

// get content type
header('Content-type: image/jpg');

$filename = $content;

// Get new dimensions
list($width, $height) = getimagesize($filename);
$new_width = 100;
$new_height = 100;

// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// Output
$thumb = imagejpeg($image_p, null, 100);
echo $thumb;

这是我尝试检索缩略图图像的脚本。 index.php

// Alle images uit de database
$query = mysqli_query($db, "SELECT * FROM images LIMIT 0, 9"); // Maximaal 9 foto's

//$id = $row['id'];
while ($row = mysqli_fetch_assoc($query)) {?>
      <a href="image.php?id=<?php echo $row['id']; ?>"><img src="get_thumb_function.php?id=<?php echo $row['id']; ?>"></a>

<?php
}//endwhile
?>

【问题讨论】:

    标签: php mysql upload blob thumbnails


    【解决方案1】:

    首先,将图像存储在数据库中是个坏主意。文件系统在处理文件方面做得更好(因为它是一个 file 系统)。它的服务速度也更快,因为 Web 服务器不必处理 PHP 请求,而是可以直接输出文件的内容。它被称为“提供静态文件”,请谷歌并阅读它。只需将它们存储在文件系统中并将文件名保存在数据库中即可。然后可以将其用作 img 标签的 src 参数的图像 URL 的基础。

    其次,每次请求时都生成缩略图是个坏主意。一次生成它,存储结果(如前所述,最好在文件系统上)并在需要时提供它会更有效。在服务器负载和页面加载方面要好得多(记住,提供静态文件比提供 PHP 请求要快)。

    由于这两个建议,我很犹豫要不要回答这个问题。不过,我觉得给了你这些建议,你可以自己决定是否继续走这条路是正确的选择。

    您需要阅读imagejpeg() 函数。它不返回图像数据。当您将null 作为第二个参数时,文件将直接回显。这是你想要的,所以删除最后一行(echo $thumb;)就足以解决这个问题。然后可以处理 $thumb 变量,除非您想检查函数调用是否成功(实际上,这可能有助于调试脚本)。

    至于为什么不显示调整大小的图像,您需要确保检索到的图像数据有效(echo $content; 在同一脚本中直接在header() 调用后直接退出)并且它是JPEG 图像。全部排序后,给出结果,因为没有这些信息就无法确定脚本是否正确。

    最后,请不要忽略我的前两个建议,因为它们被普遍认为是好的做法。

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 2015-06-14
      • 2019-01-05
      • 2018-11-26
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多