Skip to content

valeriyvan/swift-geometrize

Repository files navigation

Geometrize logo fulltext

swift-geometrize

Swift package for recreating images as geometric primitives. It began as a Swift port of the geometrize-lib C++ library, but it has since evolved in a distinct direction. You can give it a try in web version.

Usage

Look geometrize-cli target how package could be used to geometrize images.

Shape Comparison

The matrix below shows typical results for a combination of circles, triangles, rotated rectangles, rotated ellipses and all supported shapes at 50, 200 and 500 total shapes:

50 Shapes 200 Shapes 500 Shapes
Circles Chicken 50 Circles Chicken 200 Circles Chicken 500 Circles
Triangles Chicken 50 Triangles Chicken 200 Triangles Chicken 500 Triangles
Rotated Rectangles Chicken 50 RotatedRectangles Chicken 200 RotatedRectangles Chicken 500 RotatedRectangles
Rotated Ellipses Chicken 50 RotatedEllipses Chicken 200 RotatedEllipses Chicken 500 RotatedEllipses
All Shapes Chicken 50 All Shapes Chicken 200 All Shapes Chicken 500 All Shapes

Geometrizebot

You could try swift-geometrize in action in Telegram bot Geometrizebot which is also written in Swift and open-sourced.

TODO:

  • ✅ add stroke width for line, polyline and bezier curve;
  • ✅ multithreading;
  • add polygon as shape type;
  • filling shapes with gradient;
  • solve dealing with randomness in tests;
  • geometrize with predefined or user supplied brush strokes;
  • geometrize with characters (on output will be something which could be called ascii art or art produced by James Cook Type Writer Artist);
  • photo mosaic;
  • string art: 1, 2, 3, 4;
  • tape art: 1, 2, 3, 4, 5, 6.

License

Licensed under MIT license.

Buy Me A Coffee