zoukankan      html  css  js  c++  java
  • 图片压缩后,依然很大的解决方案

    昨天碰到一个很奇怪的事情,在最近的一个项目有这样的一个需求,把上传的图片进行压缩,避免因图片过大而影响浏览速度。

    代码也很简单三两句就可以实现了,但发现压缩后的图片,虽然有变小,但还不是很明显。

    代码如下: 

     

     public void CreateThumbnailImage()
    {
        Image img = Image.FromFile("e:/1.jpg");
        Image.GetThumbnailImageAbort cb = new Image.GetThumbnailImageAbort(CallBack);
        Image thumbnailImage = img.GetThumbnailImage(120, 120, cb, System.IntPtr.Zero);
        thumbnailImage.Save("e:/2.jpg");
    }
    public bool CallBack()
    {
        return false;
    }
    
    

    本来是一张大约800*700的图片(80kb),压缩到120*110左右的图片,大小应该在10kb以内,但我却发现压缩后的图片却有45kb。有个别的图片压缩后反而比原来的更大,而且用网页打开也无法显示。

    后来查了一下相关的文档,发现.net在保存图片时,是以png默认的格式来保存,我想问题应该就是出在这了,还是试试吧。  

    //获得缩略图
    public void CreateThumbnailImage()
    {
        string imgFile = "e:/1.jpg";
        Image img = Image.FromFile(imgFile);
        Image.GetThumbnailImageAbort cb = new Image.GetThumbnailImageAbort(CallBack);
        Image thumbnailImage = img.GetThumbnailImage(120, 120, cb, System.IntPtr.Zero);
        string extendName = imgFile.Substring(imgFile.LastIndexOf(".") + 1);
        ImageFormat imgFormat = GetImageFormat(extendName);
        thumbnailImage.Save("e:/2.jpg",imgFormat);
    }
    public bool CallBack()
    {
        return     false;
    }
    //获得图片格式
    private static ImageFormat GetImageFormat(String extendName)
    {
        extendName = extendName.ToLower();
        if (extendName == "gif")
        {
            return ImageFormat.Gif;
        }
        else if (extendName == "jpg" || extendName == "jpeg")
        {
            return ImageFormat.Jpeg;
        }
        else if (extendName == "bmp")
        {
            return ImageFormat.Bmp;
        }
        else if (extendName == "wmf")
        {
            return ImageFormat.Emf;
        }
        else if (extendName == "exif")
        {
            return ImageFormat.Exif;
        }
        else if (extendName == "icon")
        {
            return ImageFormat.Icon;
        }
        else if (extendName == "tiff")
        {
            return ImageFormat.Tiff;
        }
        else
        {
            return ImageFormat.Png;
        }
    }
    

     

    还真的是这样,压缩后的图片大小就只有4.6kb。

    压缩注意事项:

    1、压缩图片要指定保存的格式,虽然保存后图片名称是对的,但图片还是很大,而且在网页上还无法显示。

    2、对于图片格式为gif且为透明的图片,如果压缩后要保留透明的,那压缩的格式就要用png的,而且图片的扩展名也为png,若压缩成gif的格式,它无法保留透明的部分。

  • 相关阅读:
    关于白盒测试的心得
    基于Java的闰年测试
    等价类划分练习的代码实现
    软件测试中的等价类划分练习
    关于软件测试的初学小结
    现代软件工程作业第十二题(原十四题)
    好像木有白盒测试实验的报告,补一个~
    给大家推荐一本书啊啊~
    关于【做一名软件测试工程师,需要具备什么】的我的看法
    关于考试的笔记整理
  • 原文地址:https://www.cnblogs.com/chingho/p/1767029.html
Copyright © 2011-2022 走看看