我在一个JS轮播中显示图片。这些图片尺寸非常大,所以我在HTML中将它们缩小了。我进行了一些数学计算以保持其长宽比,在最终显示时,这些大图片的质量降低了。需要注意的是,这些图片已经存在于服务器上,我不应该改变原始文件的大小。
是什么导致了这种降低的质量?我应该坚持使用较小尺寸的图片吗?还是增加最终显示的大小?以下是代码,其中最大宽度和高度目前分别为270和180。所有内容都使用C#编写。
是什么导致了这种降低的质量?我应该坚持使用较小尺寸的图片吗?还是增加最终显示的大小?以下是代码,其中最大宽度和高度目前分别为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;
}
System.Drawing.Image
,并将其作为完全不同的图像返回到浏览器,则可以控制质量。 - Cᴏʀʏ