GitHub - CameraKit/blurkit-android: The missing Android blurring library. Fast b...
source link: https://github.com/CameraKit/blurkit-android
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
What Is BlurKit?
BlurKit is an extraordinarily easy to use and performant utility to render real time blur effects in Android.
Perfomance
BlurKit is faster than other blurring libraries due to a number of bitmap retrieval and drawing optimizations. We've been logging benchmarks for the basic high-intensity tasks for a 300dp x 100dp BlurView:
Task BlurKit time Avg. time without BlurKit Retrieve source bitmap 1-2 ms 8-25 ms Blur and draw to BlurView 1-2 ms 10-50msThis results in an average work/frame time of 2-4ms, which will be a seamless experience for most users and apps.
Setup
First add this line to the repositories block to the app level build.gradle
:
repositories {
maven {
url "https://camerakit.bintray.com/other"
}
}
Then add BlurKit to the dependencies block of the same app level build.gradle
:
dependencies {
implementation 'io.alterac.blurkit:blurkit:1.0.0'
}
Usage
BlurLayout
Add a BlurLayout
to your layout just like any other view.
<com.wonderkiln.blurkit.BlurLayout android:id="@+id/blurLayout" android:layout_width="150dp" android:layout_height="150dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="BlurKit!" android:textColor="@android:color/white" /> </com.wonderkiln.blurkit.BlurLayout>
In the Main_Activity.java
you need to override the onStart()
and onStop()
methods to include the BlurLayout
functionality.
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); blurLayout = findViewById(R.id.blurLayout); } @Override protected void onStart() { super.onStart(); blurLayout.startBlur(); } @Override protected void onStop() { blurLayout.pauseBlur(); super.onStop(); }
The layout background will continuously blur the content behind it. If you know your background content will be somewhat static, you can set the layout fps
to 0
. At any time you can re-blur the background content by calling invalidate()
on the BlurLayout
.
<io.alterac.blurkit.BlurLayout xmlns:blurkit="http://schemas.android.com/apk/res-auto" android:id="@+id/blurLayout" android:layout_width="150dp" android:layout_height="150dp" blurkit:blk_fps="0" />
Other attributes you can configure are the blur radius and the downscale factor. Getting these to work together well can take some experimentation. The downscale factor is a performance optimization; the bitmap for the background content will be downsized by this factor before being drawn and blurred.
<io.alterac.blurkit.BlurLayout xmlns:blurkit="http://schemas.android.com/apk/res-auto" android:id="@+id/blurLayout" android:layout_width="150dp" android:layout_height="150dp" blurkit:blk_blurRadius="12" blurkit:blk_downscaleFactor="0.12" blurkit:blk_fps="60" />
Creating BlurKit Outside Of A Layout
You can use the BlurKit
class which has a few useful blurring utilities. Before using this class outside of a BlurLayout
, you need to initialize BlurKit
.
public class MyApplication extends Application { @Override public void onCreate() { BlurKit.init(this); } }
You can blur a View
, or a Bitmap
directly.
// View BlurKit.getInstance().blur(View src, int radius); // Bitmap BlurKit.getInstance().blur(Bitmap src, int radius);
You can also fastBlur a View
. This optimizes the view blurring process by allocating a downsized bitmap and using a Matrix
with the bitmaps Canvas
to prescale the drawing of the view to the bitmap.
BlurKit.getInstance().fastBlur(View src, int radius, float downscaleFactor);
Upcoming Features
SurfaceView
support- Support for use outside of an
Activity
(dialogs, etc.) - Enhance retrieval of background content to only include views drawn behind the
BlurLayout
.
License
BlurKit is MIT licensed.
Blurkit is a sister project of CameraKit and maintained by the CameraKit team.
Recommend
-
137
CameraKit/camerakit-android master
-
110
CameraKit/camerakit-android: Library for Android Camera 1 and 2 APIs. Massively increase stability and reliability of photo and video capture on all Android devices....
-
84
GitHub is where people build software. More than 27 million people use GitHub to discover, fork, and contribute to over 80 million projects.
-
67
I work at CameraKit, an open source platform to provide a reliable and easy to use Camera implementation in any Android application. We were recently interested in testing an APK to see whether or…
-
36
README.md
-
42
08/15/2019 “The world’s been divided into people who can make software, and the people who use software all day, and basically we think that that paradigm is not a good one. It feels kind of broken,” says Lane Shac...
-
4
imagine what keyhole sees — Correction: Google has not changed its blurring policies in Russia The satellite images may be a boon to open source intelligence analysts....
-
7
Apple’s nudity-blurring Messages feature gets international release It’s coming to the UK, Canada, Australia, and New Zealand By...
-
3
Real-Time Image Blurring & DirectX Resource Binding in the Windows ML Samples Gallery
-
4
Apple Is Working on a 16-Inch iPad, Further Blurring Line With Laptops — The Information
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK