{"id":32323413,"url":"https://github.com/bmaslakov/cocoa-close-pixelate","last_synced_at":"2025-10-23T12:55:29.906Z","repository":{"id":56906023,"uuid":"81018700","full_name":"bmaslakov/cocoa-close-pixelate","owner":"bmaslakov","description":"Cocoa port of https://github.com/desandro/close-pixelate","archived":false,"fork":false,"pushed_at":"2017-02-20T20:05:26.000Z","size":1015,"stargazers_count":51,"open_issues_count":1,"forks_count":10,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-10-23T12:55:12.800Z","etag":null,"topics":["bitmap","cocoa-port","cocoapods","ios","pixelate","pixelator","swift"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bmaslakov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-02-05T20:09:22.000Z","updated_at":"2024-05-06T08:42:48.000Z","dependencies_parsed_at":"2022-08-20T19:20:23.146Z","dependency_job_id":null,"html_url":"https://github.com/bmaslakov/cocoa-close-pixelate","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/bmaslakov/cocoa-close-pixelate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmaslakov%2Fcocoa-close-pixelate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmaslakov%2Fcocoa-close-pixelate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmaslakov%2Fcocoa-close-pixelate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmaslakov%2Fcocoa-close-pixelate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bmaslakov","download_url":"https://codeload.github.com/bmaslakov/cocoa-close-pixelate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmaslakov%2Fcocoa-close-pixelate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280622572,"owners_count":26362261,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-23T02:00:06.710Z","response_time":142,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitmap","cocoa-port","cocoapods","ios","pixelate","pixelator","swift"],"created_at":"2025-10-23T12:55:24.695Z","updated_at":"2025-10-23T12:55:29.902Z","avatar_url":"https://github.com/bmaslakov.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cocoa-close-pixelate\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-5BA7E9.svg)](https://opensource.org/licenses/MIT) [![Bintray](https://img.shields.io/cocoapods/v/ClosePixelate.svg)]()\n\nThis simple library allows you to easily create and combine various pixelation effects.\n\nBased on a wonderful script by David DeSandro: [close-pixelate.desandro.com](http://close-pixelate.desandro.com).\n\nYou may be also be interested in the [Android/Java version of the library](https://github.com/bmaslakov/android-close-pixelate).\n\n## Examples\n\n|                                                  |                                                  |\n|--------------------------------------------------|--------------------------------------------------|\n| ![Officer-old](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/officer.jpg?raw=true) | ![Officer-new](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/officer.png?raw=true) |\n\n```swift\nPixelate.create(pixels: bitmap,\n                layers: PixelateLayer(.diamond, resolution: 48, size: 50),\n                        PixelateLayer(.diamond, resolution: 48, offset: 24),\n                        PixelateLayer(.diamond, resolution: 8, size: 6))\n```\n\n|                                                  |                                                  |\n|--------------------------------------------------|--------------------------------------------------|\n| ![Stanley-old](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/stanley.jpg?raw=true) | ![Stanley-new](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/stanley.png?raw=true) |\n\n```swift\nPixelate.create(pixels: bitmap,\n                layers: PixelateLayer(.square, resolution: 32),\n                        PixelateLayer(.circle, resolution: 32, offset: 15),\n                        PixelateLayer(.circle, resolution: 32, size: 26, offset: 13),\n                        PixelateLayer(.circle, resolution: 32, size: 18, offset: 10),\n                        PixelateLayer(.circle, resolution: 32, size: 12, offset: 8))\n```\n\n|                                                           |                                                           |\n|-----------------------------------------------------------|-----------------------------------------------------------|\n| ![Stanley-old](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/take-my-portrait.jpg?raw=true) | ![Stanley-new](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/take-my-portrait.png?raw=true) |\n\n```swift\nPixelate.create(pixels: bitmap,\n                layers: PixelateLayer(.square, resolution: 48),\n                        PixelateLayer(.diamond, resolution: 48, offset: 12, alpha: 0.5),\n                        PixelateLayer(.diamond, resolution: 48, offset: 36, alpha: 0.5),\n                        PixelateLayer(.diamond, resolution: 16, size: 8, offset: 4))\n```\n\n|                                            |                                            |\n|--------------------------------------------|--------------------------------------------|\n| ![Tony-old](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/tony.jpg?raw=true) | ![Tony-new](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/tony.png?raw=true) |\n\n```swift\nPixelate.create(pixels: bitmap,\n                layers: PixelateLayer(.circle, resolution: 32, size: 6, offset: 8),\n                        PixelateLayer(.circle, resolution: 32, size: 9, offset: 8),\n                        PixelateLayer(.circle, resolution: 32, size: 12, offset: 24),\n                        PixelateLayer(.circle, resolution: 32, size: 9, offset: 0))\n```\n\n|                                                |                                                |\n|------------------------------------------------|------------------------------------------------|\n| ![Wonder-old](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/wonder.jpg?raw=true) | ![Wonder-new](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/wonder.png?raw=true) |\n\n```swift\nPixelate.create(pixels: bitmap,\n                layers: PixelateLayer(.diamond, resolution: 24, size: 25),\n                        PixelateLayer(.diamond, resolution: 24, offset: 12),\n                        PixelateLayer(.square, resolution: 24, alpha: 0.6))\n```\n\n|                                              |                                              |\n|----------------------------------------------|----------------------------------------------|\n| ![Anita-old](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/anita.jpg?raw=true) | ![Anita-new](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/anita.png?raw=true) |\n\n```swift\nPixelate.create(pixels: bitmap,\n                layers: PixelateLayer(.square, resolution: 32),\n                        PixelateLayer(.circle, resolution: 32, offset: 16),\n                        PixelateLayer(.circle, resolution: 32, offset: 0, alpha: 0.5),\n                        PixelateLayer(.circle, resolution: 16, size: 9, offset: 0, alpha: 0.5))\n```\n\n|                                                  |                                                  |\n|--------------------------------------------------|--------------------------------------------------|\n| ![Giraffe-old](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/giraffe.jpg?raw=true) | ![Giraffe-new](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/giraffe.png?raw=true) |\n\n```swift\nPixelate.create(pixels: bitmap,\n                layers: PixelateLayer(.circle, resolution: 24),\n                        PixelateLayer(.circle, resolution: 24, size: 9, offset: 12))\n```\n\n|                                                |                                                |\n|------------------------------------------------|------------------------------------------------|\n| ![Kendra-old](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/kendra.jpg?raw=true) | ![Kendra-new](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/kendra.png?raw=true) |\n\n```swift\nPixelate.create(pixels: bitmap,\n                layers: PixelateLayer(.square, resolution: 48, offset: 12),\n                        PixelateLayer(.circle, resolution: 48, offset: 0),\n                        PixelateLayer(.diamond, resolution: 16, size: 15, offset: 0, alpha: 0.6),\n                        PixelateLayer(.diamond, resolution: 16, size: 15, offset: 8, alpha: 0.6))\n```\n\n|                                              |                                              |\n|----------------------------------------------|----------------------------------------------|\n| ![Gavin-old](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/gavin.jpg?raw=true) | ![Gavin-new](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/gavin.png?raw=true) |\n\n```swift\nPixelate.create(pixels: bitmap,\n                layers: PixelateLayer(.square, resolution: 48),\n                        PixelateLayer(.diamond, resolution: 12, size: 8),\n                        PixelateLayer(.diamond, resolution: 12, size: 8, offset: 6))\n```\n\n## Download\n\nThe library is available via cocoapods:\n\n```ruby\npod 'ClosePixelate', '1.1.2'\n```\n\n## Usage\n\nThere are several `Pixelate.create*` methods in the\n[`Pixelate`](ClosePixelate/ClosePixelate/Pixelate.swift)\nclass, allowing to create a pixelated bitmap from `CGImage`:\n\n```swift\nlet pixelated = Pixelate.create(pixels: bitmap,\n                                layers: PixelateLayer(.square, resolution: 48),\n                                        PixelateLayer(.diamond, resolution: 48, offset: 12, alpha: 0.5),\n                                        PixelateLayer(.diamond, resolution: 48, offset: 36, alpha: 0.5),\n                                        PixelateLayer(.diamond, resolution: 16, size: 8, offset: 4))\n```\n\nYou also can draw directly on a bitmap or on a canvas, using `Pixelate.render*` methods.\n\nThere are three basic layer types:\n\n| Original                                 | Square                                                         | Diamond                                                          | Circle                                                         |\n|------------------------------------------|----------------------------------------------------------------|------------------------------------------------------------------|----------------------------------------------------------------|\n| ![jamie](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/jamie.jpg?raw=true) | ![simple-lo-square](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/simple-lo-square.png?raw=true) | ![simple-lo-diamond](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/simple-lo-diamond.png?raw=true) | ![simple-lo-circle](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/simple-lo-circle.png?raw=true) |\n\nYou can change size, resolution, offset and alpha parameters of each layer:\n\n| resolution = 10                                                | resolution = 25                                                | resolution = 20, size = 50, alpha = 0.5          |\n|----------------------------------------------------------------|----------------------------------------------------------------|--------------------------------------------------|\n| ![simple-lo-square](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/simple-lo-square.png?raw=true) | ![simple-hi-square](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/simple-hi-square.png?raw=true) | ![jamie-new](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/jamie-new.png?raw=true) |\n\nYou can also combine several layers into one image:\n\n| square, resolution = 25                                        |       | diamond, resolution = 10                                         |       |                                                                  |\n|----------------------------------------------------------------|-------|------------------------------------------------------------------|-------|------------------------------------------------------------------|\n| ![simple-hi-square](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/simple-hi-square.png?raw=true) | **+** | ![simple-lo-diamond](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/simple-lo-diamond.png?raw=true) | **=** | ![sample-multilayer](https://raw.githubusercontent.com/bmaslakov/android-close-pixelate/master/screenshots/sample-multilayer.png?raw=true) |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbmaslakov%2Fcocoa-close-pixelate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbmaslakov%2Fcocoa-close-pixelate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbmaslakov%2Fcocoa-close-pixelate/lists"}