PHP上传正确尺寸的图像

PHP上传正确尺寸的图像,php,Php,我知道这个问题很常见,但我问题的要点是,我想知道facebook或其他一些网站是如何上传正确大小的图片的。例如如果我们上传一张尺寸为:宽:1000px,高:20px的图片。然后facebook会用这张照片更新状态更新,但会以正确的比例缩小图像大小。它的JU缩小了图片的比例,但我们可以知道图片的宽度非常大(我自己的词是非常高的宽度:P),只要长高的图片也以正确的比例发布 我已经包括了上面的图像示例。facebook如何计算图片的大小n比,并通过保持正确的尺寸,同时缩小图片的比例,来回传图片 我

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


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

我认为有几个因素

  • 主要因素是图像显示内容的宽度
  • 图像的原始宽度
  • 无论你是否想用图片填充整个内容(Facebook不会)
  • 假设您有一个宽度为1000px的图像。你的内容是400px。您希望用图像将内容填充一半,因此图像的结束宽度为200px。高度仅为ca百分比计算(三分法则)

    最后,您将获得正确的比率,并且它非常适合您的内容


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

    此代码相当详细,但可能会让您了解如何计算图像尺寸

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

    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);
    
    }
    
    function image\u resize\u维度($source\u width、$source\u height、$thumb\u width、$thumb\u height)
    {
    $source\u ratio=$source\u width/$source\u height;
    $thumb_比率=$thumb_宽度/$thumb_高度;
    //比例更高
    如果($thumb\u ratio>$source\u ratio)
    {
    $result\u height=$thumb\u height;
    $result\u width=$thumb\u height*$source\u ratio;
    }
    //比例更大
    elseif($thumb\u比率<$source\u比率)
    {
    $result\u width=$thumb\u width;
    $result\u height=$thumb\u width/$source\u ratio;
    }
    //比例相同
    elseif($thumb\u ratio==$source\u ratio)
    {
    $result\u height=$thumb\u height;
    $result\u width=$thumb\u width;
    }
    返回数组('x'=>$result\u宽度,'y'=>$result\u高度);
    }
    
    实际发生的情况是在服务器上重新创建图像,并通过乘数(宽度*.5)进行缩放。因此,实际上,您根本看不到原始图像。您正在看到服务器创建的一个新图像。@Scott-我无法理解您:(我理解这些点,但我无法理解比率的最后部分,即您写入16:9和4:3的部分。是的,我在调用image_resize_jpg()时已经完成了高度thanx alot dude!!thanx alot!:)的百分比计算,第一个$image参数是指向源的路径,第二个$filename是目标路径,第三个/第四个$thumb_宽度/高度是重新调整大小的图像的最大值,第五个$maximize默认为false,但设置为true时将裁剪图像的部分以强制标注,第六个$quality是从0到100的图像质量,如果要传入现有对象,请输入第7$image\u对象。