.net图片裁剪抠图之性能优化

//.net图片裁剪抠图:
1.将不坐标点存入GraphicsPath中;
GraphicsPath gPath = new GraphicsPath();
2.
通常我们判断一个坐标点是否在闭合区间内通采用GraphicsPath.IsVisible(),但事实证明这种方法判断效率及其低,这里我们采用Region.IsVisible(),
经测试,GraphicsPath.IsVisible()处理一张800*800的图片需要14s以上时间。Region.IsVisible()只需要1s.

  //
        /// <summary>
        /// 图片截图
        /// </summary>
        /// <param name="bitmap">原图路径</param>
        /// <param name="path">裁剪路径</param>
        /// <returns></returns>
        public static Bitmap BitmapCropGzf(Bitmap bitmap, GraphicsPath path)
        {
            RectangleF rect = path.GetBounds();
            int left = (int)rect.Left;
            int top = (int)rect.Top;
            int width = (int)rect.Width;
            int height = (int)rect.Height;
            //先进行剪裁:
            Bitmap imgCropped = new Bitmap(width, height);
            Graphics objGraphics = Graphics.FromImage(imgCropped);
            objGraphics.Clear(System.Drawing.Color.White);
            int intStartTop = -top;
            int intStartLeft = -left;
            Bitmap b = new Bitmap(bitmap);
            objGraphics.DrawImage(b, intStartLeft, intStartTop);
            b.Dispose();
            objGraphics.Dispose();
            Region r = new Region(path);
            GC.Collect(0);
            for (int i = left; i < left + width; i++)
            {
                for (int j = top; j < top + height; j++)
                {
                    //判断坐标是否在路径中
                    if (!r.IsVisible(i, j))
                    {
                        imgCropped.SetPixel(i - left, j - top, System.Drawing.Color.Transparent);
                    }
                }
            }
            return imgCropped;
        }

  

时间: 2024-08-29 19:58:11

.net图片裁剪抠图之性能优化的相关文章

Android应用性能优化系列视图篇——SVG图片版本兼容及性能优化解决方案

SVG矢量图在图片表现力方面远远优于PNG位图,同时在可维护性和修改性方面也比位图要方便很多.尽管Android在5.0版本就引入了SVG图片的解决方案:Vector.然而,兼容性和性能方面却是差强人意,以至于至今都未能广泛使用. 本篇博客给大家带来一套较为不错的解决方案:SVG-Android(作者是本人...),相比于Vector,其在兼容性方面能够兼容到2.3以上,同时在性能方面,也有了质的提升. 开源库地址:https://github.com/MegatronKing/SVG-Andr

base64:URL背景图片与web页面性能优化

一.base64百科 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息. 某人: 唉,我彻底废柴了,为何上面明明是中文,洒家却看不懂嘞,为什么? 好吧,我也不喜欢专业术语的解释.你只要知道,base64编码就是长得像下面这样子的代码: thunder://QUFodHRwOi8vd3d3LmJhaWR1LmNvbS9pbWcvc3NsbTFfbG9nby5naWZaWg== 上面代码大家都熟悉吧,迅雷下载链接哦(咳咳,该地址很纯洁),就

小tip: base64:URL背景图片与web页面性能优化——张鑫旭

一.base64百科 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息. 某人: 唉,我彻底废柴了,为何上面明明是中文,洒家却看不懂嘞,为什么?~~ 好吧,我也不喜欢专业术语的解释.你只要知道,base64编码就是长得像下面这样子的代码:thunder://QUFodHRwOi8vd3d3LmJhaWR1LmNvbS9pbWcvc3NsbTFfbG9nby5naWZaWg== 上面代码大家都熟悉吧,迅雷下载链接哦(咳咳,该地址很纯洁),

小tip: base64:URL背景图片与web页面性能优化

转自:http://www.zhangxinxu.com/wordpress/?p=2341 一.base64百科 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息. 某人: 唉,我彻底废柴了,为何上面明明是中文,洒家却看不懂嘞,为什么?~~ 好吧,我也不喜欢专业术语的解释.你只要知道,base64编码就是长得像下面这样子的代码: thunder://QUFodHRwOi8vd3d3LmJhaWR1LmNvbS9pbWcvc3NsbTF

Web性能优化:图片优化

程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://blog.cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到了互联网内容总量的62%,也就是说超过一半的流量和时间都用来下载图片.从性能优化的角度看,图片也绝对是优化的热点和重点之一,Google PageSpeed或者Yahoo的14条性能优化规则无不把图片优化作为重要的优化手段,本文覆盖了Web图片优化的方方面面,从基本的图片格式选择.到尚未被

新产品为了效果,做的比较炫,用了很多的图片和JS,所以前端的性能是很大的问题,分篇记录前端性能优化的一些小经验。

第一篇:HTTP服务器 因tomcat处理静态资源的速度比较慢,所以首先想到的就是把所有静态资源(JS,CSS,image,swf) 提到单独的服务器,用更加快速的HTTP服务器,这里选择了nginx了,nginx相比apache,更加轻量级, 配置更加简单,而且nginx不仅仅是高性能的HTTP服务器,还是高性能的反向代理服务器. 目前很多大型网站都使用了nginx,新浪.网易.QQ等都使用了nginx,说明nginx的稳定性和性能还是非常不错的. 1. nginx 安装(linux) htt

页面加载中的图片性能优化【转】

我的大部分性能优化工作都集中在JavaScript和CSS上,从早期的Move Scripts to the Bottom和Put Stylesheets at the Top规则.为了强调这些规则的重要性,我甚至说过,“JS和CSS是页面上最重要的部分”. 几个月后,我意识到这是错误的.图片才是页面上最重要的部分. 我关注JS和CSS的重点也是如何能够更快地下载图片.图片是用户可以直观看到的.他们并不会关注JS和CSS.确实,JS和CSS会影响图片内容 的展示,尤其是会影响图片的展示方式(比如

Android性能优化系列之Bitmap图片优化

在Android开发过程中,Bitmap往往会给开发者带来一些困扰,因为对Bitmap操作不慎,就容易造成OOM(Java.lang.OutofMemoryError - 内存溢出),本篇博客,我们将一起探讨Bitmap的性能优化. 为什么Bitmap会导致OOM? 1.每个机型在编译ROM时都设置了一个应用堆内存VM值上限dalvik.vm.heapgrowthlimit,用来限定每个应用可用的最大内存,超出这个最大值将会报OOM.这个阀值,一般根据手机屏幕dpi大小递增,dpi越小的手机,每

分享Android NDK技术详解及应用(Android加壳图片处理性能优化)

1.课程研发环境案例源代码编译和运行环境以JDK1.7和android-sdk-23以及android-ndk-10e版本为基准, ,以下环境都适用于项目.开发工具:android studio 1.5正式版, QT 5.0,SourceInsight 3.5;其他工具:使用到了IDEA PRO工具以及www.androidxref.com网站查看分析源码.2.内容简介本课程主要讲解NDK技术的基本使用方法,如基本常用的JNI函数.Android系统中能使用的本地库的使用方法和注意事项以及GCC