Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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
Algorithm 如何计算最佳比例,使图像适合其容器?_Algorithm_Actionscript 3_Flash_Image Processing - Fatal编程技术网

Algorithm 如何计算最佳比例,使图像适合其容器?

Algorithm 如何计算最佳比例,使图像适合其容器?,algorithm,actionscript-3,flash,image-processing,Algorithm,Actionscript 3,Flash,Image Processing,我有一个尺寸为: container.width,container.height 我有一张维度的图片: picture.width,picture.height 我的目标是计算最佳比例,使图片适合容器(无变形) 得到比率的算法是什么 picture.width*=ratio; picture.height*=ratio; (图片已居中放置在容器中)您可以执行以下操作: picture.width = container.width; picture.scaleY = picture.scal

我有一个尺寸为:

container.width,container.height

我有一张维度的图片:

picture.width,picture.height

我的目标是计算最佳比例,使图片适合容器(无变形)

得到比率的算法是什么

picture.width*=ratio;
picture.height*=ratio;
(图片已居中放置在容器中)

您可以执行以下操作:

picture.width = container.width;
picture.scaleY = picture.scaleX;
if(picture.height > container.height)
{
    picture.height= container.height;
    picture.scaleX = picture.scaleY;
}
你可以做:

picture.width = container.width;
picture.scaleY = picture.scaleX;
if(picture.height > container.height)
{
    picture.height= container.height;
    picture.scaleX = picture.scaleY;
}

只有两种可能:将图片的宽度与容器的宽度匹配,或将图片的高度与容器的高度匹配。两种都试试。对于每一个,计算缩放适合容器的尺寸(宽度或高度)所需的比率,并使用该比率缩放图片的其他尺寸:如果这导致图片尺寸超过相应的容器尺寸,则这种可能性不起作用


除非图片的纵横比等于容器的纵横比,否则这两种可能性中只有一种会起作用。在这种情况下,这两种可能性都会起作用(但它们将等于同一件事)。

只有两种可能性:要么将图片的宽度与容器的宽度相匹配,要么将图片的高度与容器的高度相匹配。两种都试试。对于每一个,计算缩放适合容器的尺寸(宽度或高度)所需的比率,并使用该比率缩放图片的其他尺寸:如果这导致图片尺寸超过相应的容器尺寸,则这种可能性不起作用


除非图片的纵横比等于容器的纵横比,否则这两种可能性中只有一种会起作用,在这种情况下,它们都会起作用(但它们将等于相同的东西)。

您可以使用该函数返回图片的比例:

function scaleRatio(cw:Number, ch:Number, pw:Number, ph:Number):Number
{
    return (ch / cw > ph / pw) ? cw / pw : ch / ph;
}
picture.scaleX = picture.scaleY = scaleRatio(container.width, container.height, picture.width, picture.height); 

您可以使用该函数返回图片的比例:

function scaleRatio(cw:Number, ch:Number, pw:Number, ph:Number):Number
{
    return (ch / cw > ph / pw) ? cw / pw : ch / ph;
}
picture.scaleX = picture.scaleY = scaleRatio(container.width, container.height, picture.width, picture.height); 

按如下所示计算缩放比

var ratio:Number = Math.min(
    container.width / picture.width,
    container.height / picture.height);
然后将缩放比例均匀地应用于图片,使其适合容器

picture.scaleX = picture.scaleY = ratio;

按如下所示计算缩放比

var ratio:Number = Math.min(
    container.width / picture.width,
    container.height / picture.height);
然后将缩放比例均匀地应用于图片,使其适合容器

picture.scaleX = picture.scaleY = ratio;

如果你不介意边框的话(例如:黑色边框表示宽边框/方形容器中的风景图片等)

公式为:原始宽度/原始高度*新宽度=纵横比正确的新高度

在您的情况下,这将是:

image.height=(image.width/image.height)*container.width

Alt版本:

image.width = container.width; 
image.height = container.width / (image.width / image.height);

如果你不介意边框的话(例如:黑色边框表示宽边框/方形容器中的风景图片等)

公式为:原始宽度/原始高度*新宽度=纵横比正确的新高度

在您的情况下,这将是:

image.height=(image.width/image.height)*container.width

Alt版本:

image.width = container.width; 
image.height = container.width / (image.width / image.height);

比率始终保持不变,变化的是指定维度中的长度比率始终保持不变,变化的是指定维度中的长度