{"id":27173894,"url":"https://github.com/suft/differ","last_synced_at":"2025-07-27T18:04:13.946Z","repository":{"id":118619476,"uuid":"73488228","full_name":"suft/differ","owner":"suft","description":null,"archived":false,"fork":false,"pushed_at":"2016-11-11T16:39:30.000Z","size":7640,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-09T11:49:23.139Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/suft.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-11-11T15:20:48.000Z","updated_at":"2017-03-16T17:47:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"ba27862b-93e8-441f-9a85-ee154df2bf7e","html_url":"https://github.com/suft/differ","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/suft/differ","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suft%2Fdiffer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suft%2Fdiffer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suft%2Fdiffer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suft%2Fdiffer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/suft","download_url":"https://codeload.github.com/suft/differ/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suft%2Fdiffer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267399991,"owners_count":24081176,"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-07-27T02:00:11.917Z","response_time":82,"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":[],"created_at":"2025-04-09T11:33:02.669Z","updated_at":"2025-07-27T18:04:13.933Z","avatar_url":"https://github.com/suft.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Differ\n![Original](./QAtest.jpg)\n![Result](./differences.jpg)\n\n## Summary\nAn algorithm written in Node, to spot the differences between two images and produces a grayscale image highlighting the differences. The algorithm uses percent differences in RGBA values between pixels of the two images and determines outliers by comparing values against a certain tolerance.\n\n## Differences\n* Liquid in the barrel\n* Rope tied to the boat\n* Fox's nose\n* Roof of the well\n* Vegetable\n* Wheat\n* Plowed soil\n* Sheep's Ear\n* Gazebo railing\n\n## Thinking Process\nWhen I first started the problem, I was able to spot several differences just by inspection, however I decided to write an algorithm to ensure I would spot all the differences. My first attempt at writing the algorithm involved comparing hexadecimal colour values of the pixels of both images, to my surprise, my program was outputting a 94% difference between the two images. Since the pixel colour comparison wasn't yielding any results, I opened the image in an editor and used an eye-dropper to find that the pixels which supposedly the \"same\" varied slightly while the pixels which were \"different\" varied quite a lot. So, I converted the hexadecimal colour into RGBA and calculated the percent difference between between the red aspect, green aspect, blue aspect, alpha aspect of each pixel. From there, I used the interquartile range to identify outliers.\n\n## Time Spent\n* Total of 4 hours\n    * Choosing what language to use\n    * Looking for a pixel manipulation library\n    * Hexadecimal colour comparison approach\n    * Calculating a percent tolerance to detect outliers\n    * RGBA percent difference approach\n\n## Dependencies\nJimp [[https://github.com/oliver-moran/jimp](https://github.com/oliver-moran/jimp)]\n\n## Authors\nSufien Tout [[https://github.com/suft](https://github.com/suft)]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuft%2Fdiffer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuft%2Fdiffer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuft%2Fdiffer/lists"}