• Stars
    star
    108
  • Rank 321,259 (Top 7 %)
  • Language
    Python
  • License
    ISC License
  • Created about 5 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A fast pixel-level image comparison library, originally created to compare screenshots in tests.

pixelmatch-py

A fast pixel-level image comparison library, originally created to compare screenshots in tests. Now with additional support of PIL.Image instances Python port of https://github.com/mapbox/pixelmatch.

Features accurate anti-aliased pixels detection and perceptual color difference metrics.

from pixelmatch import pixelmatch

num_diff_pixels = pixelmatch(img1, img2, 800, 600, diff, threshold=0.1)

Implements ideas from the following papers:

Install

python -m pip install pixelmatch

Example usage

PIL.Image comparison

from PIL import Image

from pixelmatch.contrib.PIL import pixelmatch

img_a = Image.open("a.png")
img_b = Image.open("b.png")
img_diff = Image.new("RGBA", img_a.size)

# note how there is no need to specify dimensions
mismatch = pixelmatch(img_a, img_b, img_diff, includeAA=True)

img_diff.save("diff.png")

Raw Image Data Comparison

from pixelmatch import pixelmatch

width, height = 1920, 1080
img_a = [R1, G1, B1, A1, R2, B2, G2, A2, ...]
img_b = [R1, G1, B1, A1, R2, B2, G2, A2, ...]

data_diff = [0] * len(img_a)

mismatch = pixelmatch(img_a, img_b, width, height, data_diff, includeAA=True)

API

pixelmatch(img1, img2, width, height, output, threshold, includeAA, alpha, aa_color, diff_color, diff_mask, fail_fast)

  • img1, img2 — RGBA Image data of the images to compare. Note: image dimensions must be equal.
  • width, height — Width and height of the images.
  • output — Image data to write the diff to, or None if don't need a diff image. Note that all three images need to have the same dimensions.
  • threshold — Matching threshold, ranges from 0 to 1. Smaller values make the comparison more sensitive. 0.1 by default.
  • includeAA — If true, disables detecting and ignoring anti-aliased pixels. false by default.
  • alpha — Blending factor of unchanged pixels in the diff output. Ranges from 0 for pure white to 1 for original brightness. 0.1 by default.
  • aa_color — The color of anti-aliased pixels in the diff output in [R, G, B] format. [255, 255, 0] by default.
  • diff_color — The color of differing pixels in the diff output in [R, G, B] format. [255, 0, 0] by default.
  • diff_mask — Draw the diff over a transparent background (a mask), rather than over the original image. Will not draw anti-aliased pixels (if detected).
  • fail_fast - If true, will return after first different pixel.

Compares two images, writes the output diff and returns the number of mismatched pixels.

contrib.PIL.pixelmatch

Compares two images, writes the output diff and returns the number of mismatched pixels. Exact same API as pixelmatch.pixelmatch except for the important fact that it takes instances of PIL.Image for image parameters (img1, img2, and output) and the width/size need not be specified.

Example output

expected actual diff
https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/4a.png https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/4b.png 1diff
https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/3a.png https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/3b.png 1diff
https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/6a.png https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/6b.png 1diff
https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/7a.png https://github.com/whtsky/pixelmatch-py/raw/master/fixtures/7b.png 1diff

Changelog

v0.3.0

  • feat: add fail_fast option #144

v0.2.4

  • type: fix typing issues
  • chore: test Python 3.10

v0.2.3

  • feat: make package comply with PEP-561

v0.2.2

  • typing: use Sequence instead of List for RGBTuple
  • build: switch to poetry_core #81

v0.2.1

  • feat: add function to compare PIL.Image instances through contrib.PIL.pixelmatch #42

v0.2.0

  • BREAKING CHANGE: remove options parameter #38
  • docs: use absolute url for images in README

v0.1.1

  • fix: fix bug in fast path #18

v0.1.0

  • Initial release

More Repositories

1

maga

Another DHT crawler written in Python using asyncio
Python
137
star
2

Catsup

A lightweight static website generator which aims to be simple and elegant.
Python
135
star
3

PyWapFetion

A simple Fetion lib for Python.
Python
71
star
4

Gather

Just another forum.
JavaScript
67
star
5

WeRoBot-SAE-demo

Python
45
star
6

Dash.py

Helps you install python documents to Dash easily.
Python
37
star
7

bencoder.pyx

A fast bencode implementation in Cython
Python
29
star
8

fulltextrssplz

Make rss full text.
TypeScript
27
star
9

uestc-evaluate-teacher.js

电子科大评教脚本
JavaScript
27
star
10

Flask-WeRoBot

Adds WeRoBot support to Flask.
Python
26
star
11

mala

Get bittorrent metadata from DHT network
Python
23
star
12

kindle-sdr-cleaner

Clean useless .sdr folders in your Kindle.
Python
16
star
13

mypy-silent

Silence mypy by adding or removing code comments
Python
14
star
14

vuex-queries

Vuex-Queries helps you write query functions in Vuex
JavaScript
12
star
15

resubname

Python
11
star
16

parguments

A simple cli args parser for Python
Python
10
star
17

Django-WeRoBot

Adds WeRoBot support to Django.
Python
10
star
18

font-rename

Renames fonts to their internal name and unpacks .ttc/.otc files.
Python
9
star
19

stuScores

学生成绩管理系统
Vue
9
star
20

uestc_os_exp

UESTC 操作系统实验
C
7
star
21

django-utils-six

Forward compatibility django.utils.six for Django 3
Python
7
star
22

home-assistant-chinese-calendar

查看一天是不是法定节假日/法定工作日的 Home Assistant Sensor
Python
7
star
23

msgfmt-action

A GitHub action for Generate binary message catalog(.mo) from textual translation description(.po).
HCL
7
star
24

catsup-theme-clean

a theme for catsup.
CSS
6
star
25

uestc_network_programming

C
6
star
26

pre-commit-beancount-format

Format beancount files using bean-format
Python
6
star
27

shapaozi

Python
5
star
28

icourse163_autorate

中国大学 MOOC 自动互评
JavaScript
5
star
29

archi

Multi-format archive library based on libarchive
Cython
5
star
30

iEditor

A online editor
Python
5
star
31

abp-rules

My list of Adblock Plus rules
5
star
32

prettier-config

4
star
33

antd-typescript-boilerplate

For creating reproduction about Ant Design's TypeScript-related issue.
JavaScript
4
star
34

antd-iconfont

For use Ant Design's iconfont without alicdn.
4
star
35

babel-plugin-webpack-prefetch

JavaScript
4
star
36

pre-commit-pretty-format-json5

A pre-commit hook that checks that all your JSON5 files are pretty.
Python
4
star
37

userscripts

JavaScript
4
star
38

uestc_compiling_exp

电子科技大学 大二上 编译技术 实验代码
C
3
star
39

django-require-migration-name

require `name` in Django's `makemigrations`
Python
3
star
40

renovate-config

JavaScript
3
star
41

dingtalk-dianfan

工作日每天定时发送点饭提醒
Python
3
star
42

KVocabPal

View & export Kindle's vocabulary data
TypeScript
3
star
43

volmoe-pack

pack comic volumes for vol.moe
Python
3
star
44

Tornado-WeRoBot

Adds WeRoBot support to Tornado.
Python
3
star
45

Alfred-BaiduX

"让我帮你百度一下" 的 Alfred Workflow
2
star
46

Alfred-Mianliao

Mianliao fucks me everyday
Python
2
star
47

awesome-epic-exclusive-games

Python
2
star
48

diningcity-sms-to-ics

Python
2
star
49

uestc-eams-cleartimeout-userscript

清除电子科大教务系统 setTimeouts 的 Userscript,可以有效提升教务系统流畅性,减轻学校服务器压力,热爱成电从我做起
JavaScript
2
star
50

kmanga_mobi

mobi package extracted from kmanga
Python
1
star
51

3G-Fetion

一个使用Python+PySide制作的3G飞信客户端
Python
1
star
52

ShaPaoZi-Mobile

The mobile app of shapaozi.me
Java
1
star
53

ticker

Go
1
star
54

Waterspout

Python
1
star
55

gqueue

Python
1
star
56

catsup-theme-sealscript

a theme for catsup.
CSS
1
star
57

uestc_java_exp

Java 实验代码
Java
1
star
58

OpenerManifest

Set of rules powering Opener for iOS
1
star
59

uestc_mathexp

电子科技大学 大一数学实验 实验代码
MATLAB
1
star
60

catsup-theme-phase

JavaScript
1
star
61

yais

Yet Another Image Scraper
HTML
1
star
62

humanstxt

A python library for dealing with humans.txt
Python
1
star
63

gitlab-merge-request-auto-hide-whitespace-userscript

User Script for Adding `?w=1` for diff links in your GitLab Merge Request Page.
JavaScript
1
star
64

pointers-on-c

C
1
star