【问题标题】:PHP uploading images in the correct dimensionsPHP以正确的尺寸上传图像
【发布时间】:2011-12-29 23:52:15
【问题描述】:

我知道这个问题很常见,但我的问题的要点是我想知道 facebook 或其他一些网站如何以正确的大小上传他们的图片。例如。如果我们上传尺寸的图片:宽度:1000px,高度:20px。然后 facebook 使用该图片更新状态更新,但使图像尺寸以正确的比例变小。它只是缩小了图片,但我们可以知道图片非常宽(我自己的词是非常高的宽度:P),其中长高的图片也以正确的比例发布。

我已经包含了上面的图像示例。 facebook如何计算图片的大小n比率并通过保持正确的尺寸但同时缩小图片来回显图片。

【问题讨论】:

  • 实际发生的是图像在服务器上重新创建并按乘数缩放(宽度 * .5)。所以,真的,你根本看不到原始图像。您看到的是服务器创建的新图像。
  • @Scott - 我想得到你 :(

标签: php


【解决方案1】:

这段代码相当冗长,但可能会让您了解如何计算图像尺寸。

参数是您的源宽度和目标最大调整宽度和高度

function image_resize_dimensions($source_width,$source_height,$thumb_width,$thumb_height)
{
  $source_ratio = $source_width / $source_height;
  $thumb_ratio = $thumb_width / $thumb_height;

  // Ratio is Taller
  if ($thumb_ratio > $source_ratio)
  {
    $result_height = $thumb_height;
    $result_width = $thumb_height * $source_ratio;
  }

  // Ratio is Wider
  elseif ($thumb_ratio < $source_ratio)
  {
    $result_width = $thumb_width;
    $result_height = $thumb_width / $source_ratio;
  }

  // Ratio the Same
  elseif($thumb_ratio == $source_ratio)
  {
    $result_height = $thumb_height;
    $result_width = $thumb_width;
  }

  return array('x'=>$result_width,'y'=>$result_height);

}

【讨论】:

  • 非常感谢老兄!!非常感谢 ! :)
  • 调用 image_resize_jpg() 时,第一个 $image 参数是源路径,第二个 $filename 是目标路径,第 3/4 个 $thumb_width/height 是调整大小的图像的最大值,第 5 个 $maximize 默认为 false,但当设置为 true 时,将裁剪图像的一部分以强制尺寸,第 6 个 $quality 是从 0 到 100 的图像质量,第 7 个 $image_object 如果您想传入现有对象。跨度>
【解决方案2】:

我认为有几个因素。

  1. 主要因素是图像显示内容的宽度
  2. 图片的原始宽度
  3. 是否要使用图像填充整个内容(Facebook 不会)

假设您有一个宽度为 1000 像素的图像。您的内容是 400 像素。您想用图像将内容填充一半,因此图像的结束宽度为 200px。高度只是 ca 百分比计算(三规则)。

最终,您将获得正确的比例,并且与您的内容完美契合。

当然,您也可以检查图像是 16:9 还是 4:3,以确定图像的最大宽度,就像您的第一个示例一样。

【讨论】:

  • 我理解这些要点,但我不理解比率的最后一部分,即你写 16:9 和 4:3 的部分。是的,我已经完成了高度的百分比计算
猜你喜欢
  • 1970-01-01
  • 2017-08-15
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多