• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > 用C#缩小照片上传到各种空间的具体方法

用C#缩小照片上传到各种空间的具体方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#照片,c#照片管理器,c#上传照片,如何缩小照片占用空间,怎么缩小照片占用空间等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本人一般也很少上传照片之类的女生喜欢玩的东西,但是偶尔还是要传一传的,为什么?因为现在与各种以前的朋友同学都很少联系,但是只要一发有个人照片的微博或日志便引来各种鲜花鸡蛋。

周末和几个同学去了西涌露营,这么美丽的海滩不上传照片分享着实可惜,可是现在的相机拍出来的照片很大,特别是单反,而咱们的网络带宽又何其可怜,所以先压缩再上传会是非常好的选择,可是呢这么多张照片一张张压缩太麻烦了(鄙人对作图是小白,不懂得使用做图工具),而咱是码农,码农就要用码农的方式,于是乎就想做个程序了。

好了废话了那么多开工了。

第一次迭代开始,先完成单张相片压缩的Demo。我始终坚信好的代码是重构出来的,因而在这里我将使用迭代开发的思想逐步完成这个程序。先看下第一次迭代的代码

            Image img = Image.FromFile(sourcePath + sourceName);
            int width = img.Width / scale;
            int height = img.Height / scale;

            Image imgNew = new Bitmap(width, height);
            Graphics g = Graphics.FromImage(imgNew);
            g.DrawImage(img, new System.Drawing.Rectangle(0, 0, width, height),
            new System.Drawing.Rectangle(0, 0, img.Width, img.Height),
            System.Drawing.GraphicsUnit.Pixel);

            imgNew.Save(savePath + "a.jpg", ImageFormat.Jpeg);
        }
</div>
  这样就保证了这个代码已经能处理单张照片了。

  第二次迭代,对其进行重构。

经过分析,该功能的实现需要两步,第一获取要缩小的图片集合,第二就是缩小图片的逻辑,故而就有了以下重构后的代码

            List<string> imageNames = GetImageNames(sourcePath);
            if (imageNames != null && imageNames.Count > 0)
            {
                foreach (var item in imageNames)
                {
                    SaveSmallPhoto(sourcePath + item, scale, savePath + item);
                }
            }
        }

        /// <summary>
        /// 获取路径下所有符合指定图片后缀文件名
        /// </summary>
        /// <param name="path">路径</param>
        /// <returns></returns>
        static List<string> GetImageNames(string path)
        {
            string[] fileNames = Directory.GetFiles(path);
            if (fileNames == null || fileNames.Length == 0)
            {
                return null;
            }

            List<string> imageNames = new List<string>();
            foreach (var item in fileNames)
            {
                if (ExistsInExtName(item, IMAGE_EXTNAME))
                {
                    imageNames.Add(item.Substring(item.LastIndexOf('\\') + 1));
                }
            }

            return imageNames;
        }

        /// <summary>
        /// 判断文件名是否符合指定后缀名
        /// </summary>
        /// <param name="name">文件名</param>
        /// <param name="extNames">符合要求的后缀名</param>
        /// <returns></returns>
        static bool ExistsInExtName(string name, string[] extNames)
        {
            if (string.IsNullOrEmpty(name) || extNames == null || extNames.Length == 0)
            {
                return false;
            }

            foreach (var item in extNames)
            {
                if (name.ToLower().EndsWith(item))
            

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 用C#缩小照片上传到各种空间的具体方法

相关文章

  • 2017-05-28C#窗口实现单例模式的方法
  • 2017-05-28探讨Object转为String的几种简易形式详解
  • 2017-05-28C#特性之匿名方法和Lambda表达式
  • 2017-05-28基于switch你可能不知道的一些用法
  • 2017-05-28c#中禁用windows的任务管理器的方法
  • 2017-05-28C# 清除cookies的代码
  • 2017-05-28C# 写入XML文档三种方法详细介绍
  • 2017-05-28C#实现的xml操作类完整实例
  • 2017-05-28解析使用C# lock同时访问共享数据
  • 2017-05-28C#数据结构之顺序表(SeqList)实例详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#实现写系统日志的方法
    • c#.net多线程编程教学——线程同步
    • C#实现把指定数据写入串口
    • 支持windows与linux的php计划任务的实现方法
    • 教你如何用C#制作文字转换成声音程序
    • C#读取csv格式文件的方法
    • 基于C#实现的仿windows左侧伸缩菜单效果
    • c#文件操作示例带详细注释
    • C#使用Directoryinfo类获得目录信息和属性的方法
    • .Net WInform开发笔记(三)谈谈自制控件(自定义控件)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有