在php中显示图像的最佳方式

时间:2010-05-29 05:09:12

标签: php mysql

我直接在mysql Db中存储图像。使用php显示高质量图像(缩略图和原始尺寸图像)的最佳方法是什么。

2 个答案:

答案 0 :(得分:0)

那么,您是将图像文件的二进制内容存储在数据库中(可能是BLOB字段),对吗?

显示原始尺寸图像并不是什么大问题,我希望您已经存储了原始图像的文件名/文件扩展名(或至少是mime类型)以及二进制数据。

如果您列出images e。 G。包含两个,content保存二进制数据,file_name保存存储图像的文件名和文件扩展名,你可以想到这样的代码:

$res = mysql_query("select * from images");

while($row = mysql_fetch_assoc($res)) {
    $pathname = 'some/path/' . $row['file_name'];
    file_put_contents($pathname, $row['content']);
}

这样做是从images表中选择所有条目,并将数据库中的二进制内容写入以orignal图像命名的outfile。在编写outfile之后,请考虑设置[chmod][1],具体取决于您的服务器设置。

如果您没有可用的文件名属性,那么您必须生成一些随机名称(可能使用md5($row['content'])?但可能会非常慢。)。但是您需要原始文件扩展名或存储图像的mime类型,否则很难找出图像是abc.JPG还是abc.PNG还是abc.GIF等。

现在,如果XYZ.jpg位于文档根文件夹中,则可以使用http://www.domain.com/some/path/XYZ.jpg访问创建的图像(例如some/path/)。

将原始图像存储在磁盘上可以轻松创建缩略图。我衷心推荐Imagemagick(检查是否已安装在您的服务器上),但您也可以使用与PHP捆绑在一起且最有可能的PHP GDLib来创建自己的缩略图脚本。已经有大量用于PHP的预构建缩略图脚本依赖于Imagemagick和/或GDLib。我还没试过,但听过关于phpThumb()的好消息。

最后一句话:您可能自己注意到了,将图像作为二进制文件存储在数据库中并不是一个好主意。当然,如果应用程序已经构建,你必须按照它们的方式处理事情,你就没有选择。但在性能方面,最好只将图像路径名与一些元数据(如文件大小,宽度,高度等)一起存储在数据库中,保持数据库大小不变,以及用于快速处理结果集的select / php代码。

答案 1 :(得分:-2)

使用php显示高质量图像(缩略图和原始尺寸图像)的最佳方法是将原始图像和缩略图存储在文件系统中,然后生成<img>标记以显示它。