c# - 确定缩放图像的适当尺寸的代码

标签 c# javascript jquery asp.net

我连完整的部分都没看懂。任何人都可以向我描述他们想要什么以及如何实现。

你能指导我吗。

最佳答案

如果必须保持纵横比,那就意味着您需要将高度和宽度缩放完全相同的量。这是一个相当容易满足的要求 - 您只需计算所需的比例并将其应用于两个维度。

为了确保图像只按比例缩小,您只检查是否超过上限,并在这些情况下进行缩放。例如,如果高度和宽度都小于 1001,并且像素数小于 500,000,那么您根本不需要缩放。

检查其他要求的上限如下:

首先,如果高度大于 1000,只需按 1000/height 缩放高度和宽度。这会将高度降低到 1,000,并相应地调整宽度。

接下来,如果宽度大于 1000,则只需将高度和宽度(由于高度可能已经缩放过)缩放 1000/width。这将宽度降低到 1,000,并且通过将高度缩小相同的量来再次保持纵横比。

最后,您需要检查像素数,其计算方式为 height * width。如果高度和宽度都为 1,000 或更小,您的像素数可能仍高达一百万。

如果超过 500,000,您将缩放高度和宽度,使像素数低于该值。因为它是一个二维值,所以您可以按 500,000/(高度 * 宽度)平方根 进行缩放。

因此,就伪代码而言,您看到的是:

if h > 1,000:
    scale = 1,000 / h
    h = h * scale       # will be 1,000
    w = w * scale

if w > 1,000:
    scale = 1,000 / w
    h = h * scale
    w = w * scale       # will be 1,000

if h * w > 500,000:
    scale = sqrt (500,000 / (h * w))
    h = h * scale
    w = w * scale

使用一些示例值(800 x 700,给出 560,000 像素)检查代码的第三部分会产生以下结果:

  800 * sqrt (500K/560K) -> 755
  700 * sqrt (500K/560K) -> 611

  755 * 611 -> 499,055 pixels, so scaled down okay.
  Ratio of 755/611 is same (roughly) as 800/700.

关于c# - 确定缩放图像的适当尺寸的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25561058/

相关文章:

c# - Repositories 的服务应该相互依赖吗?

c# - WPF MVVM - 如何检测 View 是否为 "Dirty"

javascript - required 属性不适用于表单,e.preventDefault 不适用于提交按钮

javascript - Angular 范围 watch 的行为与记录的不同

javascript - KnockoutJS 或 Javascript 未正确跟踪显示的数组

javascript - 我正在使用 bootstrap 创建幻灯片,但包含的第二个 div 比幻灯片 div 长

c# - 如何从Azure Blob存储中的Hadoop AvroContainer删除记录?

c# - HttpClient.SendAsync 不发送请求正文

javascript - 调用 html 元素并在 JavaScript 中对其进行操作

JavaScript/JQuery 倒计时器具有多个间隔设置?