flex 实现的多点切割+mask蒙版+自动识别非透明区域+自适应图片大小

本博客介绍了一个Flash应用程序,该程序允许用户通过添加和拖动顶点以任意多边形形式裁剪图片。利用Mask技术实现了切割区域内外不同的透明度效果,并通过BitmapData实现了精确的有色区域切割。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先上代码:

 

 

功能如下:

   

      能按任意多边形剪裁一个图片,多边形的点由用户添加和控制,最终切割出来的图应该是有色区域部分最小的图,透明的多余边缘可过滤。

     还有几个细节:切割过程中切割区域外要50%透明显示,内部是100%可见的,和ps的切割效果类似,只不过切点可以自由增加;用户切割操作时候应该是小屏幕,而切割后是按原图比例的。比如一个2000×2000的图片,切割屏幕只有100×100的话,要能适应。

 

代码说明:

其中切割拖动过程主区域和其它区域的区别都是用mask实现的,

 

整个的切割流程:

 

    底图使用mask,mask本身是一个canvas,里面用graphics控制,拖动切点后重新渲染一把。

 

   渲染路径算法: 按次序简单的绘制2点间路程,这个算法目前简单,每增加一个切点默认加在首尾间。

 

 

最终切割过滤有色边缘算法如下,主要是通过bitmapdata的getColorBoundsRect完成:

 

//识别有色区域
       var bmd:BitmapData = ImageSnapshot.captureBitmapData(content,new Matrix(scale,0,0,scale),null,null,null,true);
    var rect:Rectangle = bmd.getColorBoundsRect(0xff000000,0x00000000,false);
    var bmd2:BitmapData = new BitmapData(rect.width,rect.height,true,0xff000000);
    bmd2.copyPixels(bmd,rect,new Point(0,0));

 

附件demo:

 

·········奥晕,不能传swf,可自行拷贝代码运行,上面代码中是完整的。

 

只能看我实际应用的效果了:点击预览效果

设计器上面上传图片然后选择-切割功能(点击图片后,在图片下面的工具栏上)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值