Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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 Processing_Gd - Fatal编程技术网

Php 了解在保持比例的同时调整图像大小背后的数学原理

Php 了解在保持比例的同时调整图像大小背后的数学原理,php,image-processing,gd,Php,Image Processing,Gd,我不知道这个问题是否适合这里,但我想了解在PHP GD库或其他任何地方保持比率的同时调整图像大小的公式 例如,以下是一个示例: 在本例中,如果“目标纵横比”大于“原始纵横比”,则高度为目标高度,宽度由目标高度*原始纵横比计算 如果“原始_纵横比”大于“目标_纵横比”,则目标宽度为目标_宽度,高度由目标_宽度/原始_纵横比计算 为什么会这样?在保持比例时,我总是调整图像大小的方法是使用如下算法: $imgHeight=600; // Or the actual image height. $im

我不知道这个问题是否适合这里,但我想了解在PHP GD库或其他任何地方保持比率的同时调整图像大小的公式

例如,以下是一个示例:

在本例中,如果“目标纵横比”大于“原始纵横比”,则高度为目标高度,宽度由目标高度*原始纵横比计算

如果“原始_纵横比”大于“目标_纵横比”,则目标宽度为目标_宽度,高度由目标_宽度/原始_纵横比计算


为什么会这样?

在保持比例时,我总是调整图像大小的方法是使用如下算法:

$imgHeight=600; // Or the actual image height.
$imgWidth=300;  // Or again the width of the image
$imgRatio=$imgHeight/$imgWidth;
$newHeight=1000;
resize($newHeight, ($newHeight/$imgRatio)); 
// assumes Height x Width in the resize command.
然后,要调整图像大小,可以使用以下命令:

$imgHeight=600; // Or the actual image height.
$imgWidth=300;  // Or again the width of the image
$imgRatio=$imgHeight/$imgWidth;
$newHeight=1000;
resize($newHeight, ($newHeight/$imgRatio)); 
// assumes Height x Width in the resize command.
使用此方法,您可以获得原始图像的比率,然后将其应用于所需的任何大小

编辑:


如果你正在制作缩略图,你通常会希望所有缩略图的图像大小保持相同的精确大小,这样它们就可以很好地排列在一个页面上。我建议调整图像大小,使调整大小的图像适合实际缩略图-基本上在顶部或底部留出空间,然后用背景色填充或保持透明,以便与站点的其他部分配合使用。

在保持比例时,我总是调整图像大小的方法是使用如下算法:

$imgHeight=600; // Or the actual image height.
$imgWidth=300;  // Or again the width of the image
$imgRatio=$imgHeight/$imgWidth;
$newHeight=1000;
resize($newHeight, ($newHeight/$imgRatio)); 
// assumes Height x Width in the resize command.
然后,要调整图像大小,可以使用以下命令:

$imgHeight=600; // Or the actual image height.
$imgWidth=300;  // Or again the width of the image
$imgRatio=$imgHeight/$imgWidth;
$newHeight=1000;
resize($newHeight, ($newHeight/$imgRatio)); 
// assumes Height x Width in the resize command.
使用此方法,您可以获得原始图像的比率,然后将其应用于所需的任何大小

编辑:


如果你正在制作缩略图,你通常会希望所有缩略图的图像大小保持相同的精确大小,这样它们就可以很好地排列在一个页面上。我建议调整图像的大小,使调整大小的图像与实际缩略图相吻合——基本上在顶部或底部留出空间,然后用背景色填充,或者保持透明,以便与网站的其余部分配合使用。

就这些吗?有了这个,我可以创建一个200x150的缩略图,一个很小的图像,一个中等大小的图像和一个来自源图像的大图像,保持这个比例。我给了你伪代码,我确信你需要调整到实际的语法(我已经多年没有调整图像大小了),但是逻辑仍然成立,是的,可以完美地调整缩略图的大小。当然,真正的代码不仅仅是它背后的逻辑。好吧,看看我添加的编辑——更多的思考和界面来保持网站整洁。你对我发布的链接中的示例有什么看法。他在不同的情况下使用if/else语句。您的代码是否包含这些情况?那些if/else语句是多余的?就这些吗?有了这个,我可以创建一个200x150的缩略图,一个很小的图像,一个中等大小的图像和一个来自源图像的大图像,保持这个比例。我给了你伪代码,我确信你需要调整到实际的语法(我已经多年没有调整图像大小了),但是逻辑仍然成立,是的,可以完美地调整缩略图的大小。当然,真正的代码不仅仅是它背后的逻辑。好吧,看看我添加的编辑——更多的思考和界面来保持网站整洁。你对我发布的链接中的示例有什么看法。他在不同的情况下使用if/else语句。您的代码是否包含这些情况?那些if/else语句是多余的吗?