我直接在mysql Db中存储图像。使用php显示高质量图像(缩略图和原始尺寸图像)的最佳方法是什么。
答案 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>
标记以显示它。