gpt4 book ai didi

c# - 缩小图像质量损失

转载 作者:可可西里 更新时间:2023-11-01 12:51:54 32 4
gpt4 key购买 nike

我在 JS 轮播中显示图像。这些图像非常大,所以我在 HTML 中将它们缩小了。我做了一些数学运算来保持纵横比。最后,虽然那些大图像会降低质量。应该注意这些图像已经存在于服务器中,我不应该更改原始文件的大小。

是什么导致了这种质量下降?我应该坚持使用较小尺寸的图像,增加最终显示的尺寸吗?这是帮助解决问题的代码,最大宽度和高度目前分别为 270 和 180。所有这些都是 C#。

// srcccccc is the image file. Can be any kind of extension jpg, png, etc.
if (srcccccc != "")
{
Globals.NavigateURL();
string path = PortalSettings.HomeDirectory + srcccccc;
using (System.Drawing.Image img = System.Drawing.Image.FromFile(@Server.MapPath(path)))
{
int[] newSizes = ResizeWithRatio(img);
contentsall += "<img src=\"" + PortalSettings.HomeDirectory + srcccccc + "\" alt=\"Image "
+ folderidddin + "\" height=\"" + newSizes[1] + "px\"" + "\" width=\"" + newSizes[0] + "px\" />";
}
}

// HTML is dynamically added later....

private int[] ResizeWithRatio(System.Drawing.Image img)
{
int[] sizes = new int[2];
if (img.Width > maxWidth || img.Height > maxHeight)
{
float ri = (float)img.Width / (float)img.Height;
float rs = (float)maxWidth / (float)maxHeight;
if (rs > ri)
{
sizes[0] = (int)((float)img.Width * (float)maxHeight / (float)img.Height);
sizes[1] = maxHeight;
}
else
{
sizes[0] = maxWidth;
sizes[1] = (int)((float)img.Height * (float)maxWidth / (float)img.Width);
}
}
else
{
sizes[0] = img.Width;
sizes[1] = img.Height;
}
return sizes;
}

最佳答案

您遇到的问题是您根本没有缩放图像,而是告诉网络浏览器获取全尺寸图像并将其渲染得更小。遗憾的是,浏览器不太擅长此操作,我认为只需使用一个非常简单的算法即可。

解决方案是在服务器上缩放图像。我建议有一个页面处理程序,它以某种方式接收图像引用(文件名、ID 等)并在输出到客户端之前调整大小。以下问题涉及 c# 中的缩放。

High Quality Image Scaling Library

关于c# - 缩小图像质量损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11120656/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com