Giter VIP home page Giter VIP logo

pixel-sort's Introduction

๐Ÿ‘ฉโ€๐Ÿ’ป I'm currently working on...

Webfront Studio logo

Webfront Studio! There is a gap in accessible website generators that don't require development experience. So, I am aiming to produce an accessible and open source website creator geared towards small businesses and organizations.

๐ŸŒˆ Goals

  • Entirely open and transparent, including the source code
  • Feature a content management system that guides users into making accessible and inclusive content
  • Require no development knowledge from small organizations
  • Be self-hostable and extensible for developers

๐Ÿ’ผ I'm currently working at...

Blue Origin! I am developing web applications with delightful user experiences that put people and payloads in space. ๐Ÿš€๐ŸŒŒ

Learn more on my LinkedIn.

๐Ÿ•— Some interesting past work...

Show more

Adding strong TypeScript typings for Bind Deep (bind-deep). The first draft was undoubtedly a challenge, but so worth it!

Will Mutate (will-mutate) is a Babel plugin that alerts if a mutation event occurred on inputted objects โ€” essentially, a silly version of TypeScript read-only types... but at runtime. And oh golly, does it make use of ES6 Proxies.

My overengineered portfolio! Fun fact, the background header image is generated using an offscreen canvas using the user agent string, so take a peek at it on a few devices!

Rocketry.js is my mega project where I control RGB lights and buttons on MIDI controllers. It's an exciting take on hardware control using TypeScript.

Occasionally I will also work on my glitch art style pixel sorting web application that uses off the main thread scripting in React.

pixel-sort's People

Contributors

evelynhathaway avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

pixel-sort's Issues

Allow multiple layers of sorting

The performance for sorting is already a challenge, so a cached/memoized function is a must. The sorting should only update when its own layer has changed, or the layer before it (of course recursive up the layer list).

Add a canvas for drawing a mask for the sorting layer

Sorting can already be selective with thresholds. However, this relies on the user being able to find similar values in the subject that should have the glitch effect applied to.

Outside of thresholds, the user would have to isolate the subject in a photo editing program, sort that, and composite it with the original in a photo editing program again. This is probably ideal for someone that is using this seriously, but right now this app is just for playing around with, which makes this limitation annoying.

This will require a raster editing brush and eraser, and some method of enabling this mode.

Using the hard alpha of the mask canvas, the opaque pixels from the masked can serve as a lookup table for making a copy of the image data once, and then the copy of the image data can be sorted from then on out. I don't want to forget to make sure that we only copy the image data once for each selection for performance.

Performance: Divvy up regions of the image in the same image to multiple workers

Along the direction, we can split the workload of sorting. As long as no intervals are split, sorting results can be combined at the end.

This can be done by, if sorting vertically, take a certain amount of vertical strips and send that to another worker. Or potentially, just send intervals if the intervals can performantly be made in one worker in less time than it takes to serialize the entire image data into pieces.

Create mobile layout

  • Resize header
  • Remove references to dragging and dropping
  • Make the options panel a bottom sheet
  • Improve the ability to switch to original by holding

Add a back or restart button

A full upload modal launched within the sort page could also work (original goal), but maybe simpler is better here

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.