/**
*
* *-------------------*
* | *** 图片分割 *** |
* *-------------------*
*
* 编辑修改收录:fengzi(疯子、wu341、wgq341)
*
* 不会写代码,我是代码搬运工。
*
* 联系方式:QQ(493712833)。
*
* 随 笔: https://www.cnblogs.com/fengziwu/
*
* 版权协议:请自觉遵守LGPL协议,欢迎修改、复制、转载、传播给更多需要的人。
* 免责声明:任何因使用此软件导致的纠纷与软件/程序开发者无关。
* 日 期: 2019.05.08
*
*/
package fengzi.bmd
{
import flash.display.Sprite;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.display.Bitmap;
import flash.geom.Point;
public class ImgSegmentation extends Sprite
{
private var bitmapData:BitmapData;
private var _cols:uint;
private var _rows:uint;
//private var _imgArr:Array = new Array();
private var _w:uint = 0;
private var _h:uint = 0;
private var space:uint=0
/***
* ImgSegmentation 图片分割
* @param img 图片对象
* @param _cols 分割图片的横向个数
* @param _rows 分割图片的纵向个数
* @param space 分割图片的间隔
***/
public function ImgSegmentation(img:*,_cols:uint=5,_rows:uint = 5,space:uint=1)
{
this._cols = _cols;
this._rows = _rows;
this.space=space
init(img);
}
private function init(img:*):void
{
bitmapData = new BitmapData(img.width,img.height,false,0);
bitmapData.draw(img);
_w = bitmapData.width / _cols;
_h = bitmapData.height / _rows;
for (var i:int=0; i<_rows; i++)
{
for (var j:int=0; j<_cols; j++)
{
var _imgCell:BitmapData = new BitmapData(_w,_h);
//关键:从原图中复制相应的小区域像素到imgCell中
_imgCell.copyPixels(bitmapData,
new Rectangle(j*_w,i*_h,_w,_h),
new Point());
var _sprite:Sprite = new Sprite();
_sprite.addChild(new Bitmap(_imgCell));
//定位
_sprite.x = j * (_w+space);
_sprite.y = i * (_h+space);
addChild(_sprite);
//_imgArr.push(_sprite);
}
}
}
}
}