最近接到一个奇葩需求,产品同事想要支持用户上传GIF图片作为头像,并且支持裁剪GIF图片。- -
几经调研,终于用AS3实现。
基于开源项目AS3GIF,再次感谢为此项目贡献代码的兄弟。
为此项目的GIFPlayer扩展API如下:
/**
* 截取GIF动画的一部分
* @param px
* @param py
* @param pwidth
* @param pheight
* @return
*
*/
public function cut(px:int,py:int,pwidth:int,pheight:int):GIFPlayer
{
var encoder:GIFEncoder = new GIFEncoder();
encoder.setRepeat(0);
encoder.setDelay(getDelay(1));
encoder.start();
for(var i:int=0,len:int=frames.length; i<len; i++)
{
var newBitmapdata:BitmapData = new BitmapData(pwidth,pheight,false,0x000000);
newBitmapdata.copyPixels(frames[i].bitmapData,new Rectangle(px,py,pwidth,pheight),new Point(0,0));
encoder.addFrame(newBitmapdata);
}
encoder.finish();
var data:ByteArray = encoder.stream;
data.position = 0;
var player:GIFPlayer = new GIFPlayer();
player.loadBytes(data);
return player;
}
传入要截取的坐标及长宽作为参数即可。
enjoy it.