android bitmap 合成,Android-BitmapComposer(类似于AE的合成模式)

灵感来源于AE,参考AE合成图的步骤;

1FP2143351-5596-0.jpeg

封装后的使用方式

可以无限newLayer,并且每个layer对应的bitmap都有以下特征

mask PorterDuff.Mode 造作

colorFilter 滤镜操作

matrix 矩阵操作 既 位置,旋转缩放等。

BitmapComposer.newComposition(bt.getWidth(), bt.getHeight(), Bitmap.Config.ARGB_8888)

.clear()

.newLayer(BitmapComposer.Layer.bitmap(bt)

.colorFilter(new ColorMatrixColorFilter(colorMatrix))

.matrix(matrix) )

.newLayer(BitmapComposer.Layer.bitmap(bt)

.colorFilter(new ColorMatrixColorFilter(colorMatrix))

.mask(wave, PorterDuff.Mode.DST_IN)

.matrix(matrix) )

.render();

实例demo:zone-sdk项目运行后:->动画、surfaceView、绘图方面的研究->波浪 进入即可看到;

1FP2143351-1644-1.gif

demo原理:第一层是 黑白图片,第二层是加过 波浪Mask(遮罩的-既android的PorterDuff)的原图

代码范例:

image2.post(new Runnable() {

@Override

public void run() {

Bitmap bt = SampleUtils.load(WaveActivity.this, R.drawable.aaaaaaaaaaaab)

.bitmap();

ColorMatrix colorMatrix = new ColorMatrix();

colorMatrix.setSaturation(0);

BitmapComposer bitmapComposer = BitmapComposer.newComposition(bt.getWidth(), bt.getHeight(), Bitmap.Config.ARGB_8888);

Matrix first = new Matrix();

first.postTranslate(0, -20);

new WaveHelper(bt.getWidth(), bt.getHeight(), new WaveHelper.RefreshCallback() {

@Override

public void refresh(Bitmap wave) {

Bitmap render = bitmapComposer.clear()

.newLayer(BitmapComposer.Layer.bitmap(bt)

.colorFilter(new ColorMatrixColorFilter(colorMatrix)))

.newLayer(

BitmapComposer.Layer.bitmap(bt)

// .colorFilter(new ColorMatrixColorFilter(colorMatrix))

.mask(wave, PorterDuff.Mode.DST_IN)

// .matrix(first)

)

.render();

image2.setImageBitmap(render);

}

});

}

});

Reference&Thanks:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值