https://github.com/bmaslakov/cocoa-close-pixelate
Cocoa port of https://github.com/desandro/close-pixelate
https://github.com/bmaslakov/cocoa-close-pixelate
bitmap cocoa-port cocoapods ios pixelate pixelator swift
Last synced: 9 months ago
JSON representation
Cocoa port of https://github.com/desandro/close-pixelate
- Host: GitHub
- URL: https://github.com/bmaslakov/cocoa-close-pixelate
- Owner: bmaslakov
- License: mit
- Created: 2017-02-05T20:09:22.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-02-20T20:05:26.000Z (over 9 years ago)
- Last Synced: 2025-10-23T12:55:12.800Z (9 months ago)
- Topics: bitmap, cocoa-port, cocoapods, ios, pixelate, pixelator, swift
- Language: Swift
- Size: 991 KB
- Stars: 51
- Watchers: 5
- Forks: 10
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# cocoa-close-pixelate
[](https://opensource.org/licenses/MIT) []()
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](http://close-pixelate.desandro.com).
You may be also be interested in the [Android/Java version of the library](https://github.com/bmaslakov/android-close-pixelate).
## Examples
| | |
|--------------------------------------------------|--------------------------------------------------|
|  |  |
```swift
Pixelate.create(pixels: bitmap,
layers: PixelateLayer(.diamond, resolution: 48, size: 50),
PixelateLayer(.diamond, resolution: 48, offset: 24),
PixelateLayer(.diamond, resolution: 8, size: 6))
```
| | |
|--------------------------------------------------|--------------------------------------------------|
|  |  |
```swift
Pixelate.create(pixels: bitmap,
layers: PixelateLayer(.square, resolution: 32),
PixelateLayer(.circle, resolution: 32, offset: 15),
PixelateLayer(.circle, resolution: 32, size: 26, offset: 13),
PixelateLayer(.circle, resolution: 32, size: 18, offset: 10),
PixelateLayer(.circle, resolution: 32, size: 12, offset: 8))
```
| | |
|-----------------------------------------------------------|-----------------------------------------------------------|
|  |  |
```swift
Pixelate.create(pixels: bitmap,
layers: PixelateLayer(.square, resolution: 48),
PixelateLayer(.diamond, resolution: 48, offset: 12, alpha: 0.5),
PixelateLayer(.diamond, resolution: 48, offset: 36, alpha: 0.5),
PixelateLayer(.diamond, resolution: 16, size: 8, offset: 4))
```
| | |
|--------------------------------------------|--------------------------------------------|
|  |  |
```swift
Pixelate.create(pixels: bitmap,
layers: PixelateLayer(.circle, resolution: 32, size: 6, offset: 8),
PixelateLayer(.circle, resolution: 32, size: 9, offset: 8),
PixelateLayer(.circle, resolution: 32, size: 12, offset: 24),
PixelateLayer(.circle, resolution: 32, size: 9, offset: 0))
```
| | |
|------------------------------------------------|------------------------------------------------|
|  |  |
```swift
Pixelate.create(pixels: bitmap,
layers: PixelateLayer(.diamond, resolution: 24, size: 25),
PixelateLayer(.diamond, resolution: 24, offset: 12),
PixelateLayer(.square, resolution: 24, alpha: 0.6))
```
| | |
|----------------------------------------------|----------------------------------------------|
|  |  |
```swift
Pixelate.create(pixels: bitmap,
layers: PixelateLayer(.square, resolution: 32),
PixelateLayer(.circle, resolution: 32, offset: 16),
PixelateLayer(.circle, resolution: 32, offset: 0, alpha: 0.5),
PixelateLayer(.circle, resolution: 16, size: 9, offset: 0, alpha: 0.5))
```
| | |
|--------------------------------------------------|--------------------------------------------------|
|  |  |
```swift
Pixelate.create(pixels: bitmap,
layers: PixelateLayer(.circle, resolution: 24),
PixelateLayer(.circle, resolution: 24, size: 9, offset: 12))
```
| | |
|------------------------------------------------|------------------------------------------------|
|  |  |
```swift
Pixelate.create(pixels: bitmap,
layers: PixelateLayer(.square, resolution: 48, offset: 12),
PixelateLayer(.circle, resolution: 48, offset: 0),
PixelateLayer(.diamond, resolution: 16, size: 15, offset: 0, alpha: 0.6),
PixelateLayer(.diamond, resolution: 16, size: 15, offset: 8, alpha: 0.6))
```
| | |
|----------------------------------------------|----------------------------------------------|
|  |  |
```swift
Pixelate.create(pixels: bitmap,
layers: PixelateLayer(.square, resolution: 48),
PixelateLayer(.diamond, resolution: 12, size: 8),
PixelateLayer(.diamond, resolution: 12, size: 8, offset: 6))
```
## Download
The library is available via cocoapods:
```ruby
pod 'ClosePixelate', '1.1.2'
```
## Usage
There are several `Pixelate.create*` methods in the
[`Pixelate`](ClosePixelate/ClosePixelate/Pixelate.swift)
class, allowing to create a pixelated bitmap from `CGImage`:
```swift
let pixelated = Pixelate.create(pixels: bitmap,
layers: PixelateLayer(.square, resolution: 48),
PixelateLayer(.diamond, resolution: 48, offset: 12, alpha: 0.5),
PixelateLayer(.diamond, resolution: 48, offset: 36, alpha: 0.5),
PixelateLayer(.diamond, resolution: 16, size: 8, offset: 4))
```
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 |
|------------------------------------------|----------------------------------------------------------------|------------------------------------------------------------------|----------------------------------------------------------------|
|  |  |  |  |
You can change size, resolution, offset and alpha parameters of each layer:
| resolution = 10 | resolution = 25 | resolution = 20, size = 50, alpha = 0.5 |
|----------------------------------------------------------------|----------------------------------------------------------------|--------------------------------------------------|
|  |  |  |
You can also combine several layers into one image:
| square, resolution = 25 | | diamond, resolution = 10 | | |
|----------------------------------------------------------------|-------|------------------------------------------------------------------|-------|------------------------------------------------------------------|
|  | **+** |  | **=** |  |