Initial commit
This commit is contained in:
commit
f8359d0812
|
@ -0,0 +1,38 @@
|
||||||
|
bits = 2
|
||||||
|
outfile = "out.png"
|
||||||
|
print_debug = False
|
||||||
|
|
||||||
|
# End of the configuration section
|
||||||
|
|
||||||
|
import PIL.Image, sys
|
||||||
|
def debug(*args):
|
||||||
|
if print_debug: print(*args)
|
||||||
|
def binprecision(start, bits, length):
|
||||||
|
end = bin(int(start))[2:]
|
||||||
|
while len(end) < bits:
|
||||||
|
end = '0' + end
|
||||||
|
return end[:length]
|
||||||
|
image = PIL.Image.open(sys.argv[1])
|
||||||
|
mode = "L"
|
||||||
|
if bits == 1:
|
||||||
|
mode = "1"
|
||||||
|
out = PIL.Image.new(mode,image.size)
|
||||||
|
colors = [int(i*255.0/(2**bits-1)) for i in range(2**bits)]
|
||||||
|
debug(image.width, image.height)
|
||||||
|
for x in range(image.width):
|
||||||
|
for y in range(image.height):
|
||||||
|
pos = (x,y)
|
||||||
|
color = image.getpixel(pos)
|
||||||
|
debug(color)
|
||||||
|
if len(color) == 4:
|
||||||
|
color = color[:3] # Exclude alpha layer
|
||||||
|
color = float(sum(color))/len(color)
|
||||||
|
debug(color)
|
||||||
|
debug(bin(int(color)))
|
||||||
|
index = int(binprecision(color, 8, bits), 2)
|
||||||
|
debug(index)
|
||||||
|
out.putpixel(pos, colors[index])
|
||||||
|
debug()
|
||||||
|
debug("------------")
|
||||||
|
debug()
|
||||||
|
out.save(outfile)
|
|
@ -0,0 +1,9 @@
|
||||||
|
# Image downsampling converter
|
||||||
|
|
||||||
|
Inspired by [2bit](http://2bit.neocities.org/)
|
||||||
|
|
||||||
|
Usage: `python3 2bit.py my_image_file.png`
|
||||||
|
|
||||||
|
Warning: Will probably turn transparency black
|
||||||
|
|
||||||
|
You can change the number of bits at the top of the file for different results. 1 would be just black and white, while 8 would be the original image in greyscale.
|
Loading…
Reference in New Issue