在android中的图像和videofilter像snapchat

我正在开发一个应用程序,我希望filter应用的方式Snapchat,从我所能理解的是,他们使用PagerAdapter,但我不知道他们是如何应用filter的图像或video,而不是另一个图像与filter应用于它。 任何想法或代码片段可以做同样的高度赞赏的图像和video都保存。 感谢:D 这是我正在努力实现的[![] [1] [1]

Solutions Collecting From Web of "在android中的图像和videofilter像snapchat"

我在这里做的是叠加两个位图。 使用用户的触摸来确定两个位图中的哪一个应该是可见的。 我有一个枚举,用户滚动的方向基本是左或右,没有。 取决于用户在哪个方向上滚动不同的位图被应用在当前位图上。

@Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if (mCurrentScrollDirection.ordinal() == ScrollDirection.NONE.ordinal()) { if (distanceX > 0) { mCurrentScrollDirection = ScrollDirection.LEFT; } else { mCurrentScrollDirection = ScrollDirection.RIGHT; } } mTouchX = (int) e2.getX(); overlayBitmaps(mTouchX); return false; } private void overlayBitmaps(int coordinateX) { switch (mCurrentScrollDirection) { case NONE: { //do nothing here break; } case LEFT: { overlayNextBitmap(coordinateX); break; } case RIGHT: { overlayPreviousBitmap(coordinateX); break; } } } private void overlayPreviousBitmap(int coordinateX) { mImageCanvas.save(); Bitmap OSBitmap = Bitmap.createBitmap(mCurrentBitmap, coordinateX, 0, mCurrentBitmap.getWidth() - coordinateX, mCurrentBitmap.getHeight()); mImageCanvas.drawBitmap(OSBitmap, coordinateX, 0, null); Bitmap FSBitmap = Bitmap.createBitmap(mPreviousBitmap, 0, 0, coordinateX, mCurrentBitmap.getHeight()); mImageCanvas.drawBitmap(FSBitmap, 0, 0, null); mImageCanvas.restore(); mCapturedImageView.setImageDrawable(new BitmapDrawable(getResources(), mResultBitmap)); } private void overlayNextBitmap(int coordinateX) { mImageCanvas.save(); Bitmap OSBitmap = Bitmap.createBitmap(mCurrentBitmap, 0, 0, coordinateX, mCurrentBitmap.getHeight()); mImageCanvas.drawBitmap(OSBitmap, 0, 0, null); Bitmap FSBitmap = Bitmap.createBitmap(mNextBitmap, coordinateX, 0, mCurrentBitmap.getWidth() - coordinateX, mCurrentBitmap.getHeight()); mImageCanvas.drawBitmap(FSBitmap, coordinateX, 0, null); mImageCanvas.restore(); mCapturedImageView.setImageDrawable(new BitmapDrawable(getResources(), mResultBitmap)); } 

这工作得很好,我只是没有testing低内存设备,考虑到我找不到很多:)

有关完整的代码参考,请查看此链接。 这是我自己的图书馆,你可以捕捉图像应用filter,并获得callback的调用活动。 这仍在进行中。