First commit
This commit is contained in:
parent
2396a52752
commit
0fad25dc91
17
README.md
17
README.md
|
@ -1,2 +1,17 @@
|
||||||
# RepRapFirmware-Image-Tools
|
# RepRapFirmware-Image-Tools
|
||||||
Tools to generate and test RepRapFirmware LCD images
|
Python tools to generate and test RepRapFirmware LCD images from any common image format. Preserves the pixel dimensions, reduces to single-colour.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
Python3
|
||||||
|
math, sys, and PIL libraries installed
|
||||||
|
|
||||||
|
## RRF-Gen.py
|
||||||
|
Generates images for use with the [RepRapFirmware 128x64 LCD implementation](https://duet3d.dozuki.com/Wiki/Duet_2_Maestro_12864_display_menu_system)
|
||||||
|
Usage: `./RRF-Gen.py [inputfile] [outputfile]`
|
||||||
|
eg: `./RRF-Gen.py nozzle.gif nozzle.img`
|
||||||
|
|
||||||
|
## RRF-View.py
|
||||||
|
Displays a preview of the images
|
||||||
|
|
||||||
|
## In use
|
||||||
|
I used this to generate some images for [my menu setup](https://github.com/jameswood/Duet-Maestro-Menu)
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
import math
|
||||||
|
import sys
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
|
image = Image.open(sys.argv[1]).convert('L')
|
||||||
|
|
||||||
|
bitsPerRow = math.ceil(image.width/8) * 8
|
||||||
|
paddingBits = bitsPerRow - image.width
|
||||||
|
outputFile = open(sys.argv[2], "wb")
|
||||||
|
|
||||||
|
outputFile.write(bytes((image.width,)))
|
||||||
|
outputFile.write(bytes((image.height,)))
|
||||||
|
|
||||||
|
for row in range(image.height):
|
||||||
|
outputByte = ""
|
||||||
|
bitCounter = 0
|
||||||
|
for column in range(image.width):
|
||||||
|
pixel = image.getpixel((column,row))
|
||||||
|
if bitCounter > 7:
|
||||||
|
outputFile.write(bytes((int(outputByte,2),)))
|
||||||
|
outputByte = ""
|
||||||
|
bitCounter = 0
|
||||||
|
if pixel > 128:
|
||||||
|
outputByte += "0"
|
||||||
|
else:
|
||||||
|
outputByte += "1"
|
||||||
|
bitCounter += 1
|
||||||
|
for i in range(0, paddingBits):
|
||||||
|
outputByte += "0"
|
||||||
|
outputFile.write(bytes((int(outputByte,2),)))
|
||||||
|
|
||||||
|
outputFile.close()
|
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
import math
|
||||||
|
import sys
|
||||||
|
|
||||||
|
inputFile = open(sys.argv[1], "rb")
|
||||||
|
print("opening ", sys.argv[1])
|
||||||
|
contents = inputFile.read()
|
||||||
|
byteCount = 0
|
||||||
|
imageBytes = ''
|
||||||
|
|
||||||
|
for char in contents:
|
||||||
|
if byteCount == 0: width=char
|
||||||
|
elif byteCount == 1: height = char
|
||||||
|
else:
|
||||||
|
imageBytes += "{:08b}".format(char)
|
||||||
|
byteCount += 1
|
||||||
|
|
||||||
|
bitsPerRow = math.ceil(width/8) * 8
|
||||||
|
|
||||||
|
print(" width: ", width)
|
||||||
|
print("height: ", height)
|
||||||
|
print("padded bits per row: ", bitsPerRow)
|
||||||
|
|
||||||
|
bitNumber = 1
|
||||||
|
row = 0
|
||||||
|
for bit in imageBytes:
|
||||||
|
if bit == '0': bit = '◻︎'
|
||||||
|
if bit == '1': bit = '◼︎'
|
||||||
|
if bitNumber - (bitsPerRow * row) <= width:
|
||||||
|
print(bit, end='')
|
||||||
|
if bitNumber % bitsPerRow == 0:
|
||||||
|
print()
|
||||||
|
row += 1
|
||||||
|
bitNumber += 1
|
Binary file not shown.
After Width: | Height: | Size: 75 B |
|
@ -0,0 +1 @@
|
||||||
|
øÀøÀøÀððÀÀ€
|
Loading…
Reference in New Issue