惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
博客园 - 司徒正美
博客园 - 【当耐特】
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
人人都是产品经理
人人都是产品经理
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
宝玉的分享
宝玉的分享
V
V2EX
S
SegmentFault 最新的问题
V
Visual Studio Blog
阮一峰的网络日志
阮一峰的网络日志
Martin Fowler
Martin Fowler
Jina AI
Jina AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
L
LangChain Blog
D
Docker
腾讯CDC

博客园 - ю意思я

视频播放的进化(一) 图片同步 WPF初体验 C#实现开关显示器功能 共享文件夹 w32Time服务(NTP)的一些配置 ShutdownAPI 将文件读取到内存中 在windows server 2003服务器上提供NTP时间同步服务 如何与使用DHCP获取IP地址的设备组网 在VS内添加Web Reference 如何消除锯齿,在图片上画出高质量的文字 如何让Firefox3支持迅雷 获取和设置IP地址 判断字符串是否为IPv4地址 axWindowsMediaPlayer操作 关于相对路径匹配的问题 ToFriendlyFileSize Class的设计
图片裁剪
ю意思я · 2009-08-11 · via 博客园 - ю意思я

  刚好需要做图片裁剪,就在网上找了几个方法,都拿来试试,分析一下。
  方法一(原帖地址:他的做法是将一个已知文件名的图片裁剪后保存为另一个文件,我根据自己的需要改成了输入和输出都是Image对象的方式):

ImageCut

  方法二(原帖地址:同方法一,做了一些修改):

ImageCut

  两种方法的比较:
  两种方法生成的图片是一样的,区别在于所用的时间;为此我做了几个测试:当取一张分辨率为2592X1944、大小为2.09M的图片作为原始图片时,方法一用时436.5毫秒,方法二为333.2毫秒;而当图片大到分辨率为6404X4724、大小为25.1M的时候,方法一用时3485.0毫秒,方法二用时2758.8毫秒,两者相差超过半秒钟;可以预见,图片越大,方法二的速度优势越明显;因此,如果从节省时间资源的角度考虑,应该选用方法二。
  更正:
  由于编写代码上的疏忽,导致原先对切割图片的时间计算是错误的;同时对于方法一再次做了修改,代码如下:

ImageCut

  由于此方法的切割采用了Bitmap对象的Clone()方法,因此我将传入的参数做了相应的修改,并将其切割精度扩大到小数级别;排除所有干扰后重新对两个方法进行耗时测试,结果为:当取一张分辨率为2592X1944、大小为2.09M的图片作为原始图片时,方法一用时5.1毫秒左右,方法二为46毫秒左右;而当图片大到分辨率为6404X4724、大小为25.1M的时候,方法一仅用时5.8毫秒左右,方法二用时240毫秒左右;可见,方法一的速度优势是极其明显的;究其原因,方法一采用了Bitmap对象的Clone,而方法二将大量的时间耗在了DrawImage上;因此,方法一在切割图片的时间资源占用上是非常非常小的,或许已经达到了GDI+所能做到的极限;当然,或许还不是;所以我会继续研究下去的,也不能再犯之前不够细致的错误了,嘿嘿~