我有一个使用C#语言的asp.net MVC5应用程序,其中一个网页让用户上传具有不同宽高比的不同尺寸的图像文件。
上传的图像文件将显示在另一个固定尺寸的网页上:w= 130px,高度= 23px,以及<img src="xyz..." style="width:130px; height:23px" />等HTML img标签
当用户的原始图片文件具有不同的尺寸和宽高比时,如何使用特定的逻辑或算法编写C#代码,将上传的图片文件相对于那些固定尺寸(130px X 23px)和宽高比为5.65 ( 130/23 )的图片文件保存在服务器上?上传图片的质量应该是好的。
请看附件中的屏幕截图。顶部的蓝色图像是用户的原始图像文件,具有不同的尺寸和纵横比。底部的红色图像是上传到服务器的图像文件,具有固定的尺寸和纵横比。

图像文件可以是png、gif、jpg、bmp。
谢谢。
发布于 2019-02-23 22:32:07
调整图像大小时,除非它是矢量图形,否则总是会失去质量。遗憾的是,它们大多不是矢量图形。
放大
假设你有一个5px×5px的图像,你想把它放大到10px×10px,那么75个新像素从哪里来?是的,它需要以某种方式来弥补。存在不同的算法来组成这些新的像素,如最近邻,双线性,双三次等。一些工具甚至具有锐化功能。
缩容
如果你有一个5px×5px的图像,你想把它缩小到2px×2px,你会丢失21个像素。
更多信息
因此,你总是会失去质量,但技巧可以用来使它看起来,在肉眼看来,就像没有像素丢失或添加。记住一条简单的规则,永远不要超过300%,否则你会开始注意到质量下降。此外,最好从较大的图像开始,因此要求用户上传较大的图像,以便您可以缩小规模。
我使用一个名为ImageResizer的c#库来调整大小。它以NuGet包的形式提供。
在Apache2许可下,
的ImageResizer v4核心库和必备版中的18个插件是免费的,并且是开源的。
请参阅许可中的overview。
如果您对算法感兴趣,请参阅this文章。
https://stackoverflow.com/questions/54841930
复制相似问题