17 votes

I made a program that creates the colour palette of a film

I saw these things originally on Reddit that extracted the average colour of frames from films and put them together to make a colour palette for said film, the original creator has a site called The Colors of Motion. I thought it would be cool to try and create a simple PowerShell script that does the same thing.

Here are a few examples:
Finding Nemo: https://i.imgur.com/8YwOlwK.png
The Bee Movie: https://i.imgur.com/umbd3co.png
Harry Potter and the Philosopher's Stone: https://i.imgur.com/6rsbv0M.png

I've hosted my code on GitHub so if anyone wants to use my PowerShell script or suggest some ways to improve it feel free. You can use pretty much any video file as input as it uses ffmpeg to extract the frames.

GitHub link: https://github.com/ArkadiusBear/FilmStrip

4 comments

  1. [3]
    Comment deleted by author
    Link
    1. [2]
      Ark
      Link Parent
      Yeah I realised that earlier on when I was messing around with the code, I'm probably going to add another parameter that lets you specify the oirentation and then add the logic to the main loop,...

      Yeah I realised that earlier on when I was messing around with the code, I'm probably going to add another parameter that lets you specify the oirentation and then add the logic to the main loop, shouldn't be that hard. But yes you could just rotate the image, although adding it to the code means the user doesn't have to do it themselves.

      3 votes
      1. [2]
        Comment deleted by author
        Link Parent
        1. Ark
          Link Parent
          The amount of time it takes is based on the width and height of the final image as well as the density, all of which you can specify with parameters for the script. The density is essentially how...

          The amount of time it takes is based on the width and height of the final image as well as the density, all of which you can specify with parameters for the script. The density is essentially how many strips it creates for the entire film. Say the film is 100 minutes long, and you supply a density of 100, it will take a frame for every minute of the film and create the final picture at the correct width and height.

          Generating the image at 500x1500 with a density of 400 only takes about a minute, the actual length of the film doesn't affect the time it takes.

          3 votes
  2. [2]
    Jedi
    Link
    Don't want to take away from what you did, sorry if you interpret it this way, that's not my intention. But I'm running on Linux (technically Chrome OS), and I wanted to play around with it too!...

    Don't want to take away from what you did, sorry if you interpret it this way, that's not my intention.
    But I'm running on Linux (technically Chrome OS), and I wanted to play around with it too! Unfortunately this only works with Windows, so I recreated it in Dart to run on (theoretically) all operating systems. I also made sure to credit you, of course.

    The source code is here if anyone wants: https://github.com/JediBurrell/FilmStrip/

    5 votes
    1. Ark
      Link Parent
      Looks good! I am actually trying to get into using Linux at the moment as well as coding in C++, I made the script in PowerShell because I do it a lot at work so it was the easiest option.

      Looks good! I am actually trying to get into using Linux at the moment as well as coding in C++, I made the script in PowerShell because I do it a lot at work so it was the easiest option.