ctypes-based binding library for the xBRZ pixel-art image scaling algorithm
Project description
xbrz.py
xbrz.py is a simple ctypes-based binding library for xBRZ, a high-quality pixel-art image scaling algorithm.
Installation
Wheels are available for many platforms. If there isn't one for your platform, make sure you have a C++ compiler handy.
pip install xbrz.py
Usage
import xbrz
# pixels is a list of 32 bit ints representing RGBA colors.
# It is 32 * 24 long.
pixels = ...
scaled_pixels = xbrz.scale(pixels, 6, 32, 24, xbrz.ColorFormat.RGBA)
# scaled_pixels is a 32 * 24 * 6 ** 2 long list of 32 bit ints representing the scaled image.
Wand / Pillow support
You can pass a Wand image to xbrz.scale_wand(img, factor)
or a Pillow image to xbrz.scale_pillow(img, factor)
.
Neither libraries are required to use xbrz.py, however they can be installed via:
pip install xbrz.py[wand]
# or
pip install xbrz.py[pillow]
xbrz.py as an executable module
Passing raw RGBA pixels to python3 -m xbrz <factor> <width> <height>
via stdin will output scaled raw RGBA pixels to stdout.
License
AGPLv3, see LICENSE.md. The original xBRZ code is GPLv3 licensed.
- lib/ is based on code provided by Zenju under the GPLv3 license. See lib/License.txt for details.
Some changes were made:
- Added some
extern "C"
declarations to the functions I intended to call from python. - Removed some namespace use to avoid being mangled.
- Replaced a template that was fucking braindead even for a C++ developer with a simple function that takes two arguments. Was that so hard?
- Converted the library to use RGBA instead of ARGB.
- Added some
- xbrz.py is based on lib/ and is released under the AGPLv3 license, see LICENSE.md for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for xbrz.py-1.0.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1dc3f48794e4d4d241d95ecdbf00dfd4cc61cc02c213c841d44129ccf97303d8 |
|
MD5 | 14dbbf37f7aed229b81673288622ef40 |
|
BLAKE2b-256 | a94d8ad2fac47530d0bc25e5b5f437320abe6ed5ba08cb6f299f615856b8acd5 |
Hashes for xbrz.py-1.0.1-pp36-pypy36_pp73-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a75a990a3dc97a12a70b1c6e1f1de8049b1703f3e604c4921bd6ae0f8afe7ba |
|
MD5 | 83aafa48a0cc9b8fe97e2fda5dfec5dd |
|
BLAKE2b-256 | 15dff1888e0c972844b902a60295c50ba0c9f8e28bab8809a424e4d59e4bede6 |
Hashes for xbrz.py-1.0.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30b2d0575c6a7e2ce4bd07f837fe51694f38313b7b69814d73a10a0464b7b727 |
|
MD5 | e608cd20e0268431f26c3040e83df7fd |
|
BLAKE2b-256 | c13cc15040f37a1518a09747aa52eb1a5e47d65476061fd0f3fc6596e2cf5c4e |
Hashes for xbrz.py-1.0.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e24d212282d7d88eb23d9bf8a35c9ffa210d588d22d1755a734666fa31d46cef |
|
MD5 | 984ad4be306ebb7e1c74fb2cf86f4d12 |
|
BLAKE2b-256 | 2bc176e4c4b669fbca65c1daeb57b055d64d6addc8d18ad1d69b431156020dca |
Hashes for xbrz.py-1.0.1-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2838d17aee459ac8c0931f97644e50089abf78c59ec6b3788bec0c7ca049ed3 |
|
MD5 | 789990b2499653de6f1780d4f1bf38d7 |
|
BLAKE2b-256 | 37985391207cb760683386a42c58b0a0120c32a98ffbe3351e96ef110dfc9e06 |
Hashes for xbrz.py-1.0.1-cp38-cp38-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24d1d80fde30429d5efe20ee1f488132fec7d9165d45dbd5de79321c225bbcbb |
|
MD5 | 111b6dc27ba4c45219dde4e722e975a5 |
|
BLAKE2b-256 | 7e276884cee0956b658a15fa69cfea9122a0973549b1d6188df63cba9914bf29 |
Hashes for xbrz.py-1.0.1-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9b3f562b63f069e28684f89e5149493252ab8718633f83ffc0c00486a78b784 |
|
MD5 | 684c0d935a29721a80b23f0939a2f720 |
|
BLAKE2b-256 | 7d7711eb79a2c69dc80860af1e4d5cbd8ee54d0602c0de4a632b5b03f3bca0ab |
Hashes for xbrz.py-1.0.1-cp38-cp38-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd2c0d88ae196b470ff9c8608af298c3b3d5b1eadc01c9900fe6d87a4b297a18 |
|
MD5 | 4b5fec52e85698bb681bd3c3c39573da |
|
BLAKE2b-256 | 6c1efa879f5f886ab57d6b7c809cd86290b43de226feba45f417c4991021ead9 |
Hashes for xbrz.py-1.0.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46e2b16266542cc4ecbe15218d112b7a750b71325e79f90bb7b05dbe65fbd12e |
|
MD5 | d49f478ac7bae2e217c6421bfe5c3363 |
|
BLAKE2b-256 | 580c4c4e0a9647eb076c0c98053f3120220f4f46ec2e1c3f99d59343668869f4 |
Hashes for xbrz.py-1.0.1-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab92bd54cb51f29255d584ef2470c6a4369838679670e4d95d7b03db454c8a5e |
|
MD5 | 7b65da46165cf2acc8350ca822e47fa9 |
|
BLAKE2b-256 | 1bf667aa3fd6b740b4bf12f08351b6e1c80008a82298373bb365e9c74e4f9e6a |
Hashes for xbrz.py-1.0.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f944f26969d08525fbac51b311160438139faf1ed93ecd55ef51b8782b07f2d7 |
|
MD5 | bb0b06c5140a8dab08d77c6fdfa7e837 |
|
BLAKE2b-256 | 1cf809d1c84b4aacdd4066907ab2ddcbdd882039a870dbb02bf659f5c0b8b16f |
Hashes for xbrz.py-1.0.1-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d89d47bd45b407cb8a600d5c049283f9815377da43a3605971e9069d6c6934c5 |
|
MD5 | 367640a184c04311201a855b1137f2a2 |
|
BLAKE2b-256 | 31e23055fd6f49e9a64d186ec8f7e8d1fe202af9b23cc0147defc52cae57843d |
Hashes for xbrz.py-1.0.1-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e3fca3b38943a45cf9036aa9add3e27ea1ae39a6bd1cbf6cdf6cfdde633a499d |
|
MD5 | 6d32fc40e9299b13c3a0e0c7e4b242ac |
|
BLAKE2b-256 | dceafb1eea7f5a1b344fe16a3d0824163cf096fdaca23a215e84b8eff9bab0ac |
Hashes for xbrz.py-1.0.1-cp37-cp37m-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c419035c922abec13c170c974c19ae1f92c79de339ebd493fefe10dab8830993 |
|
MD5 | 8983064fd15d0f11a7f721aa0e1fd6cf |
|
BLAKE2b-256 | 8739a96f8da5db9e67f9d2f44bddc4d917e90936d8ee4de25d29378000c16269 |
Hashes for xbrz.py-1.0.1-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c4e25dd246504f6cd6d8102231c3b7bddb8a3593bf92f5b5768d60387c2fa279 |
|
MD5 | bda014875eb2c2f31082f8404bed8754 |
|
BLAKE2b-256 | 7f3c777269e27daaca8ee8b702c1c418d2d7e7510e727e58495696f6ecd29401 |
Hashes for xbrz.py-1.0.1-cp37-cp37m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30928af470f99c8f6d8fdd38fc81da1fcf2f74802f2674055ff94a26dacee78d |
|
MD5 | bf389bc7c197381ed75a436dbaee39c0 |
|
BLAKE2b-256 | 67ea50a7212006447aa6c953c4f0ed5cfe30aab5950ce425caa9f0b9de0028a5 |
Hashes for xbrz.py-1.0.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a9972c9d6547cc35b9c06dd9d845829a2a79d93da43b06e563a0843728a198c |
|
MD5 | 33436de4683c194634f7a84d1e0065c6 |
|
BLAKE2b-256 | bc52ba71f4ee71c7bc36e135f836811dd7311a5f6240c66b06c544b43eaa126e |
Hashes for xbrz.py-1.0.1-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9960fb656fb651dc875592778fc2e6475dad83bd09e46ebb01f9ff41d59c9577 |
|
MD5 | 158944a107949ba9b693a5b0659f55c0 |
|
BLAKE2b-256 | 98f9322f727addffbf41704edf593d16c490f532cd0781974b2cc3464228b106 |
Hashes for xbrz.py-1.0.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10fe87d693e05db81985f0cc865e40e7ef01a5b98187758526c5c3f00c0a628e |
|
MD5 | dcbb45e5f6c2c2c1b6606195f0572be7 |
|
BLAKE2b-256 | 551cda38642f290b194c6d70f44e18728164c40503326e49733f8cb3e7aa333d |
Hashes for xbrz.py-1.0.1-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26b000ba071c213f52c498f23cc987f4a8288714ab4e5d02dc2e34f582cb7b91 |
|
MD5 | a638709aa8680d3e817895ccf66a4e79 |
|
BLAKE2b-256 | 801013bd5404775f8fb64c74c90e1b67654d02dc337d45e507e5c52a4b6196a3 |
Hashes for xbrz.py-1.0.1-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c0e4b80a0e0529c7b80ad2bcaa8c46c8261fb53198dfeb39010bdcd7b46fa422 |
|
MD5 | c326adee7e24f31a4071e93011ef87cf |
|
BLAKE2b-256 | b6710a11982db9b29fad8bc3a81d0c619d380c280d2c652938458dbe4cf3294c |
Hashes for xbrz.py-1.0.1-cp36-cp36m-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ed2d1b82bd63e2729524424b3d9bd70fad076864c84d241d68e041afdc35031 |
|
MD5 | 103fb58e41baf22704182197aff608fc |
|
BLAKE2b-256 | 5fbed8407d94e45794368bcc6c56417426b66c7777084878c1568c6173ff91a2 |
Hashes for xbrz.py-1.0.1-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d7c842b98a37043cee6f7d6fdb2641d8f91086a1a61bf2c221870d0f579919b1 |
|
MD5 | 740c5bbf217f813e71c04908023877a8 |
|
BLAKE2b-256 | 5f31b8ac2bc3f09ffd8092fc14cdd252598ce2ce07362ba6ee1bc90cc882834e |
Hashes for xbrz.py-1.0.1-cp36-cp36m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | efab8c03c936a8829a1e896ef7a9f970f67d5d3046a544f3e6e89f046163a0bb |
|
MD5 | 2d1e4ff3a631a5d7a7e5c293e5d13fb8 |
|
BLAKE2b-256 | e4bd415ff62b59d734e87e430010563afbeb6a3cca718907719f6fe05f011035 |
Hashes for xbrz.py-1.0.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1db66e8c9678cc1f44b47226cb26e81d494e35ea164a9c7ac5db1cb0fcb8386 |
|
MD5 | 94d09bb00e11e05d08d6da2d971489e3 |
|
BLAKE2b-256 | 0b097537972137ae8a6be519dd281a85d4dd3d40272f9401ddb71b9c6f74f5f2 |
Hashes for xbrz.py-1.0.1-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0f19bf955388bbadd1efcc74bc8dab82373afba63e87ff9608b582b9195ac47 |
|
MD5 | 161288bf99fba4047b078c820f7f97a9 |
|
BLAKE2b-256 | bb991909a8aecc12fbdd380e61afa10cfd44d4a7f67288a3e5599de83526bd1b |
Hashes for xbrz.py-1.0.1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 926ab60285c01cbeb31f2422055b2552256829134fa8b6ab3d2247bb4f85230b |
|
MD5 | 548fd547d83a95ceb2d1951a2d53accb |
|
BLAKE2b-256 | 435f0e45a814e76eb2f9af5e4a151f2bc10c65e78d4caa0300fca2e433775c41 |