【问题标题】:best way to display image in php在 php 中显示图像的最佳方法
【发布时间】:2010-05-29 05:09:12
【问题描述】:

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

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    那么,您将图像文件的二进制内容存储在数据库中(可能是 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 表中选择所有条目,并将二进制内容从数据库写入以原始图像命名的输出文件。考虑在写入输出文件后设置[chmod][1],具体取决于您的服务器设置。

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-15
        • 2017-08-03
        • 2020-05-03
        • 2018-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多