ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

缩小图像质量损失

2019-11-01 06:16:59  阅读:239  来源: 互联网

标签:image-resizing image-quality html javascript c


我正在JS Carousel中显示图像.图片非常大,因此我将其缩小为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;
}

解决方法:

您遇到的问题是根本没有缩放图像,而是告诉Web浏览器拍摄完整尺寸的图像并将其缩小.可悲的是,浏览器并不擅长于此,我认为只是使用一种非常简单的算法即可做到这一点.

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

High Quality Image Scaling Library

标签:image-resizing,image-quality,html,javascript,c
来源: https://codeday.me/bug/20191101/1981729.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有