android-close-pixelate
![Bintray](https://img.shields.io/bintray/v/bmaslakov/maven/io.uuddlrlrba%3Aclose-pixelate.svg)
This simple library allows you to easily create and combine various pixelation effects.
Based on a wonderful script by David DeSandro: close-pixelate.desandro.com.
You may be also be interested in the iOS/Swift version of the library.
Examples
Pixelate.render(bitmap,
new PixelateLayer.Builder(PixelateLayer.Shape.Diamond)
.setResolution(48)
.setSize(50)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Diamond)
.setResolution(48)
.setOffset(24)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(8)
.setSize(6)
.build());
Pixelate.render(bitmap,
new PixelateLayer.Builder(PixelateLayer.Shape.Square)
.setResolution(32)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(32)
.setOffset(15)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(32)
.setSize(26)
.setOffset(13)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(32)
.setSize(18)
.setOffset(10)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(32)
.setSize(12)
.setOffset(8)
.build());
Pixelate.render(bitmap,
new PixelateLayer.Builder(PixelateLayer.Shape.Square)
.setResolution(48)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Diamond)
.setResolution(48)
.setOffset(12)
.setAlpha(0.5f)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Diamond)
.setResolution(48)
.setOffset(36)
.setAlpha(0.5f)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(16)
.setSize(8)
.setOffset(4)
.build());
Pixelate.render(bitmap,
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(32)
.setSize(6)
.setOffset(8)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(32)
.setSize(9)
.setOffset(16)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(32)
.setSize(12)
.setOffset(24)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(32)
.setSize(9)
.setOffset(0)
.build());
Pixelate.render(bitmap,
new PixelateLayer.Builder(PixelateLayer.Shape.Diamond)
.setResolution(24)
.setSize(25)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Diamond)
.setResolution(24)
.setOffset(12)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Square)
.setResolution(24)
.setAlpha(0.6f)
.build());
Pixelate.render(bitmap,
new PixelateLayer.Builder(PixelateLayer.Shape.Square)
.setResolution(32)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(32)
.setOffset(16)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(32)
.setOffset(0)
.setAlpha(0.5f)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(16)
.setSize(9)
.setOffset(0)
.setAlpha(0.5f)
.build());
Pixelate.render(bitmap,
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(24)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(24)
.setSize(9)
.setOffset(12)
.build());
Pixelate.render(bitmap,
new PixelateLayer.Builder(PixelateLayer.Shape.Square)
.setResolution(48)
.setOffset(24)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Circle)
.setResolution(48)
.setOffset(0)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Diamond)
.setResolution(16)
.setSize(15)
.setOffset(0)
.setAlpha(0.6f)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Diamond)
.setResolution(16)
.setSize(15)
.setOffset(8)
.setAlpha(0.6f)
.build());
Pixelate.render(bitmap,
new PixelateLayer.Builder(PixelateLayer.Shape.Square)
.setResolution(48)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Diamond)
.setResolution(12)
.setSize(8)
.build(),
new PixelateLayer.Builder(PixelateLayer.Shape.Diamond)
.setResolution(12)
.setSize(8)
.setOffset(6)
.build());
Download
The library is available at jcenter:
repositories {
jcenter()
}
dependencies {
compile 'io.uuddlrlrba:close-pixelate:1.2.0'
}
Usage
There are several Pixelate.from*
methods in the
Pixelate
class, allowing to create a pixelated bitmap from other bitmaps, resources, input streams, etc:
Bitmap pixelated = new Pixelate.fromBitmap(
bitmap,
new PixelateLayer.Builder(PixelateLayer.Shape.Square)
.setResolution(48)
.setSize(50)
.build()
);
You also can draw directly on a bitmap or on a canvas, using Pixelate.render*
methods.
There are three basic layer types:
Original |
Square |
Diamond |
Circle |
![jamie](https://github.com/bmaslakov/android-close-pixelate/raw/master/screenshots/jamie.jpg?raw=true) |
![simple-lo-square](https://github.com/bmaslakov/android-close-pixelate/raw/master/screenshots/simple-lo-square.png?raw=true) |
![simple-lo-diamond](https://github.com/bmaslakov/android-close-pixelate/raw/master/screenshots/simple-lo-diamond.png?raw=true) |
![simple-lo-circle](https://github.com/bmaslakov/android-close-pixelate/raw/master/screenshots/simple-lo-circle.png?raw=true) |
You can change size, resolution, offset and alpha parameters of each layer:
resolution = 10 |
resolution = 25 |
resolution = 20, size = 50, alpha = 0.5 |
![simple-lo-square](https://github.com/bmaslakov/android-close-pixelate/raw/master/screenshots/simple-lo-square.png?raw=true) |
![simple-hi-square](https://github.com/bmaslakov/android-close-pixelate/raw/master/screenshots/simple-hi-square.png?raw=true) |
![jamie-new](https://github.com/bmaslakov/android-close-pixelate/raw/master/screenshots/jamie-new.png?raw=true) |
You can also combine several layers into one image:
square, resolution = 25 |
|
diamond, resolution = 10 |
|
|
![simple-hi-square](https://github.com/bmaslakov/android-close-pixelate/raw/master/screenshots/simple-hi-square.png?raw=true) |
+ |
![simple-lo-diamond](https://github.com/bmaslakov/android-close-pixelate/raw/master/screenshots/simple-lo-diamond.png?raw=true) |
= |
![sample-multilayer](https://github.com/bmaslakov/android-close-pixelate/raw/master/screenshots/sample-multilayer.png?raw=true) |