PHP生成的特定图像尺寸

时间:2011-09-28 12:36:49

标签: php html image

众所周知,如果我们在width元素中指定height<img />属性,浏览器可以在呈现的布局中立即定位图像。这不是一个非常大的速度提升,但它是非常好的优化实践。

好的,但有时图像有不同的尺寸。所以我们可以通过PHP getimagesize()函数来获取它。

这是一个问题,如果我们没有具体的维度,那么使用PHP值得吗?当然,我们必须编写额外的代码,但是如果我们处理库,我们总是使用PHP,所以在这种情况下它只有2行代码。

您有什么看法?

4 个答案:

答案 0 :(得分:0)

这取决于你想要做什么。在<img/>标记上添加维度的好处是:

  1. 浏览器知道在下载图像时要为图像保留的空间。这意味着当图像加载时,您的布局不会跳转。
  2. 一旦图像加载(速度优化),它将保存浏览器不执行重排并重新绘制。
  3. HTML加载完成后,您将拥有可用于任何Javascript处理的维度。
  4. 另一方面,添加尺寸会增加页面大小并导致您使用更多带宽。

答案 1 :(得分:0)

你必须意识到getimagesize会导致I / O读取(除非你从db中读取blob,然后就可以了)。因此,您只需加载I / O读取加载图像。计算机通常足够快,以至于计算浏览器图像的宽度和高度并不是一个问题。

然后,您还有其他优化场所:

  • 精灵
  • 将资源放入CDN而非应用
  • 验证您的代码

我认为一般来说,实施这一点是不切实际的,因为它会产生更优化效率低下的效率。

答案 2 :(得分:0)

好吧,我从不打扰。坦率地说,大多数网站都没有打扰。问题是浏览器不需要下载整个图像来获得它的尺寸。大多数图像格式在文件的标题中具有图像大小。所以一旦浏览器获得文件的前几个字节,它就已经知道尺寸是多少。

答案 3 :(得分:0)

函数getimagesize()尝试在每次调用PHP时从文件中解析图像大小。所以基本上没有一个磁盘寻找你有两个(加解析 - 如果你解析一些巨大的视频文件而不是图像,它可能是几秒钟)。

我个人有一个CMS只在图像上传时读取图像大小,然后将其与其他数据一起保存在DB中,因此不需要额外的磁盘访问。当然这对你来说可能有点过头了 - YMMV。

最好的建议:测试一下。这是一个简单的测试,它将为您提供最相关的答案。