【问题标题】:PHP Image OptimizerPHP 图像优化器
【发布时间】:2015-08-19 18:32:00
【问题描述】:

我们正在构建一个网络应用程序,该应用程序将上传大量图像。优化这些图像并将其存储在网站上的最佳解决方案是什么?

还有没有一种方法可以自动增强正在上传的图像?

【问题讨论】:

    标签: php image api optimization


    【解决方案1】:
    1. 不要将图像存储在数据库中,将它们存储在文件系统中(作为真实文件)。不过,您可能需要将有关它们的信息存储在 DB 中,例如文件名、上传时间、大小、所有者等。
    2. 文件名必须是唯一的。您可以使用yyyymmddhhiissnnnn,其中yyyymmdd 是年、月和日期,hhiiss - 小时、分钟和秒,nnnn - 那一秒的图像数,即0001 用于第一张图像,@987654326 @ 用于第二张图片等。这将为您提供具有良好排序的唯一文件名。
    3. 考虑制作一些逻辑目录结构。在单个文件夹中存储数百万张图像不是一个好主意,因此您需要有类似images/<x>/<y>/<z>/<filename> 的东西。这也可以跨越多个服务器。
    4. 保留原始图像。你永远不知道一两年后你会想用图像做什么。您可以将它们转换为一些常见的格式,即如果您允许上传 JPG、PNG 和其他格式,则可以将它们全部存储为 JPG。
    5. 创建和存储您网站所需的各种调整大小的图像。例如,社交网络通常有 3 种调整大小的图像 - 一种用于在各个地方与用户 cmets 一起显示(非常小),一种用于在个人资料页面中显示(很小,但不像图标;可能是 240x320 像素)和一种用于“全尺寸”查看(通常小于原始尺寸)。这些相关图像的文件名应与原始图像的文件名相似,例如,后缀_icon_profile_full 可能会添加到原始图像的文件名中。根据您的资源和同时上传的图像数量,您可以实时执行此操作(在同一个 HTTP 请求中)或使用一些后台处理(连续检查是否有新图像的 cron 作业)转换)。

    至于自动增强图像 - 这是可能的,但前提是您确切知道必须对图像执行什么操作。我认为分析每张图像并决定应该如何处理它可能太复杂并且占用太多资源。

    【讨论】:

      【解决方案2】:

      所有来自上面 binaryLV 的好建议。除了他的建议 #5,您可能还想优化您创建的缩略图。上传图像时,它们可能包含缩略图不需要的元数据。您可以无损删除元数据以缩小缩略图大小,如下所示:http://code.google.com/speed/page-speed/docs/payload.html#CompressImages。我个人在我的网站的图像上使用 jpegtran,以便在创建缩略图时自动优化我的缩略图。如果您需要元数据,可以从原始图像中获取。

      如果您计划向用户显示这些图像,则需要考虑的其他事项是将您的图像托管在无 cookie 的域或子域中,如下所述:http://developer.yahoo.com/performance/rules.html#cookie_free。如果图像托管在具有 cookie 的域或子域上,那么每个图像都会发送一个不必要的 cookie。它可以为每个请求的图像节省几 KB,这可以加起来相当可观,尤其是在带宽受限的连接(例如移动设备)上。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-03
        • 2011-10-04
        • 1970-01-01
        • 2012-03-10
        • 1970-01-01
        • 2021-02-01
        • 2020-12-05
        相关资源
        最近更新 更多