Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP图像优化器_Php_Image_Api_Optimization - Fatal编程技术网

PHP图像优化器

PHP图像优化器,php,image,api,optimization,Php,Image,Api,Optimization,我们正在建立一个网络应用程序,将有很多图片上传。优化这些图像并将其存储在网站上的最佳解决方案是什么 还有一种方法我可以自动增强上传的图像吗 不要将图像存储在数据库中,将它们存储在文件系统中(作为真实文件)。不过,您可能需要在DB中存储有关它们的信息,例如文件名、上载时间、大小、所有者等 文件名必须是唯一的。您可以使用yyyyymmddhhiissnnn,其中yyyymmdd是年、月和日期,hhiiss-小时、分钟和秒,nnnnn-第二个图像中的图像数,即第一个图像为0001,第二个图像为0002

我们正在建立一个网络应用程序,将有很多图片上传。优化这些图像并将其存储在网站上的最佳解决方案是什么

还有一种方法我可以自动增强上传的图像吗

  • 不要将图像存储在数据库中,将它们存储在文件系统中(作为真实文件)。不过,您可能需要在DB中存储有关它们的信息,例如文件名、上载时间、大小、所有者等
  • 文件名必须是唯一的。您可以使用
    yyyyymmddhhiissnnn
    ,其中
    yyyymmdd
    是年、月和日期,
    hhiiss
    -小时、分钟和秒,
    nnnnn
    -第二个图像中的图像数,即第一个图像为
    0001
    ,第二个图像为
    0002
    等。这将为您提供具有良好顺序的唯一文件名
  • 考虑制作一些逻辑目录结构。在单个文件夹中存储数百万张图像不是一个好主意,因此您需要像
    images///
    这样的东西。这也可以跨越多个服务器
  • 保留原始图像。你永远不知道一两年后你想用图像做什么。您可以将它们转换为一些通用格式,例如,如果您允许上载JPG、PNG和其他格式,您可以将它们全部存储为JPG
  • 创建并存储网站中所需的各种大小调整后的图像。例如,社交网络通常有3种大小调整后的图像-一种用于在不同位置显示用户评论(非常小),一种用于在个人资料页面中显示(非常小,但不像图标;可能是240x320像素),另一种用于“全尺寸”查看(通常比原始图像小)。这些相关图像的文件名应与原始图像的文件名相似,例如,可以将后缀
    \u icon
    \u profile
    \u full
    添加到原始图像的文件名中。根据您的资源和同时上载的图像数量,您可以实时(在同一HTTP请求中)或使用一些后台处理(cron作业,该作业持续检查是否有新图像要转换)

  • 至于自动增强图像-这是可能的,但前提是你确切地知道如何处理图像。我认为分析每一张图片并决定应该用它做什么可能太复杂,需要太多的资源。

    上面binaryLV的所有好建议。除了他的建议#5之外,你可能还想优化你创建的缩略图。上载图像时,它们可能包含缩略图不需要的元数据。您可以无损地删除元数据,以减小缩略图大小,如下所示:。我个人在我的网站的图片上使用jpegtran来自动优化我的缩略图。如果需要元数据,可以从原始图像中获取

    如果您打算为用户显示这些图像,则需要考虑的是,在这里没有提到的cookie免费域或子域名上托管您的图像:如果图像托管在具有cookie的域或子域上,则每个图像都将发送一个不必要的cookie。它可以为每个请求的图像节省几KB的空间,加起来相当可观,特别是在带宽受限的连接上,例如在移动设备上