计算宽度和高度有关宽高比的任何给定的最大宽度和最大高度

本文关键字:高度 计算 高比 任何 | 更新日期: 2023-09-27 18:16:23

我被要求在尊重图片原始长宽比的情况下将任何图片调整为其等效缩略图。

到目前为止,我只成功地完成了这一点,而只通过了最大值。宽度,如下所示:

public static Size GetSizeAdjustedToAspectRatio(int sourceWidth, int sourceHeight, int dWidth, int dHeight)
{
    bool isLandscape = sourceWidth > sourceHeight;
    int fixedSize = dWidth;
    double aspectRatio = (double)sourceWidth / (double)sourceHeight; ;
    if (isLandscape)
        return new Size(fixedSize, (int)((fixedSize / aspectRatio) + 0.5));
    else
        return new Size((int)((fixedSize * aspectRatio) + 0.5), fixedSize);
}

我已经尝试了几种方法来计算它,以便它可以接受任何给定的最大值。高度和最大值。宽度,以便在最终结果图片上保持原始长宽比

计算宽度和高度有关宽高比的任何给定的最大宽度和最大高度

此处:

public static Size GetSizeAdjustedToAspectRatio(int sourceWidth, int sourceHeight, int dWidth, int dHeight) {
    bool isLandscape = sourceWidth > sourceHeight;
    int newHeight;
    int newWidth;
    if (isLandscape) {
        newHeight = dWidth * sourceHeight / sourceWidth;
        newWidth = dWidth;
    }
    else {
            newWidth = dHeight * sourceWidth  / sourceHeight;
            newHeight = dHeight;
    }
    return new Size(newWidth, newHeight);
}

在横向中,您将缩略图的宽度设置为目标框的宽度,高度根据三规则确定。在竖屏中,您可以将缩略图的高度设置为目标框的高度并计算宽度。