PHP调整图像大小固定大小但保持方向

Posted

技术标签:

【中文标题】PHP调整图像大小固定大小但保持方向【英文标题】:PHP resize image fixed size but maintain orientation 【发布时间】:2010-03-31 13:56:31 【问题描述】:

我需要使用 GD 将 php 中的图像大小调整为固定大小但保持方向(纵向/横向),这些是:

肖像:375 x 500 像素 横向:500 x 375px

我尝试过的一切总是忽略方向,将它们全部变成横向。

谁能帮忙?

【问题讨论】:

【参考方案1】:

检查传入图像的宽度和高度。如果宽度大于高度,则将目标尺寸设为 500 x 375,否则设为 375 x 500。然后使用这些目标尺寸运行调整大小代码。

【讨论】:

因为你已经有一个 gd 图片资源,你可以使用 imagesx() 和 imagesy() 来获取宽度和高度。【参考方案2】:

这是我使用的图像类中的一种方法,用于计算图像的缩放尺寸。它的工作原理是将图像拟合到一个方形框中。

您可以设置$box = 500,然后传递您尝试调整大小的图像的$x$y,它将始终返回正确调整大小的尺寸,并保持纵横比。

public static function fit_box($box = 200, $x = 100, $y = 100)

  $scale = min($box / $x, $box / $y, 1);
  return array(round($x * $scale, 0), round($y * $scale, 0));

【讨论】:

嗯,问题不是缩放,而是如何确定图像是纵向(高度>=宽度)还是横向(宽度>=高度)方向。 我假设他想在调整图像大小的同时保持纵横比和方向,这就是我的功能要做的事情。该函数将始终将较大尺寸保持在 500 像素,同时匹配较短尺寸而无需知道方向。【参考方案3】:

这个问题在这里得到了正确的回答:How to detect shot angle of photo, and auto rotate for website display like desktop apps do on viewing?

简短的回答是,您需要使用exif_read_data() 函数来获取照片的“方向”属性,然后您可以使用该值来确定是否需要旋转照片。上面的答案包含示例 PHP 代码,向您展示了如何做到这一点。

【讨论】:

以上是关于PHP调整图像大小固定大小但保持方向的主要内容,如果未能解决你的问题,请参考以下文章

PHP:图像调整大小和裁剪为纵向

在php中将图像调整大小并裁剪为固定大小

如何在浏览器宽度调整大小但保持相同高度时自动调整图像大小?

通过保持纵横比和宽度调整 UIImage 的大小

使用gd在php中调整图像大小后的黑色背景

使用 php Imagick 保留背景调整 PNG 的大小