Skip to content

rothomas/Image-N

 
 

Repository files navigation

Image manipulation Coding Challenge

Ground Rules

  1. Must push your work to a repository to be considered (timestamp of commit will be used in “tie” situations)
  2. You can use any language that you see fit.
  3. The implementation must be able to run with provided input. (run locally or deployed somewhere).
  4. Postman will be used to validate so you must have this on your machine.
  5. Code as you normally do, use Google

Problem to Solve In today’s challenge, we will be doing some image processing. Create a service that takes in a Base64 Encoded String and outputs a processed Base64 Encoded string. POST with body: { "encoded" : "${BASE64EncodedString}" }

Challenge #1: Given an image input, change the Primary Text Color to any color than the original. Leave the background as-is. http://localhost:8080/fontChange

Challenge #2: Given an image input, inverse the colors of the image. The text will be "mostly black" and the background white. http://localhost:8080/inverse

Extra Credit Challenge #3: Given an image input, rotate the image 90 degrees(either direction) via low level operations. Packages that rotate the “file” as whole are not qualified solutions. http://localhost:8080/rotate

Assumptions:

  1. Only happy scenarios will be involved. a. Don’t worry about error handling.
  2. Only PNG will be used for testing.
  3. Roughly only “black and white” images will be used.

Hints:

RGB(255, 255, 255) is White

RGB(0,0,0) is Black

Helpful links: Base64 file encoder: https://varvy.com/tools/base64/

RGB Color Chart: https://www.rapidtables.com/web/color/RGB_Color.html

Base64 to Image decoder: https://codebeautify.org/base64-to-image-converter

Example File:

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

==================================================

About

Image manipulation Coding Challenge

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 100.0%