pi-dichotomy update
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
/.idea/
|
||||||
+50
-27
@@ -59,6 +59,10 @@ def save_byte(name, data):
|
|||||||
f.write(bytearray(data))
|
f.write(bytearray(data))
|
||||||
|
|
||||||
|
|
||||||
|
def get_int(b):
|
||||||
|
return int((b * 8)[:8], 2)
|
||||||
|
|
||||||
|
|
||||||
def n2b(num, nbyte=4):
|
def n2b(num, nbyte=4):
|
||||||
b = []
|
b = []
|
||||||
for i in range(nbyte):
|
for i in range(nbyte):
|
||||||
@@ -151,28 +155,31 @@ def get_data(b):
|
|||||||
|
|
||||||
|
|
||||||
def get_bw_bmp_data(b, width):
|
def get_bw_bmp_data(b, width):
|
||||||
|
return get_grey_bmp_data(b, width, 1)
|
||||||
|
|
||||||
|
|
||||||
|
def get_grey_bmp_data(b, width, l):
|
||||||
data = []
|
data = []
|
||||||
for n in range(width * width):
|
for n in range(width * width):
|
||||||
c = 0
|
c = get_int(b[n * l:(n + 1) * l])
|
||||||
if b[n] == '1':
|
|
||||||
c = 255
|
|
||||||
data += [c, c, c] # grey
|
data += [c, c, c] # grey
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
def get_grey_bmp_data(b, width):
|
def get_color_bmp_data(b, width, l):
|
||||||
data = []
|
data = []
|
||||||
for n in range(width * width):
|
for n in range(int(width * width)):
|
||||||
c = b[n * 8:(n + 1) * 8]
|
c1 = get_int(b[(3 * n) * l:(3 * n + 1) * l])
|
||||||
data += [int(c, 2), int(c, 2), int(c, 2)] # grey
|
c2 = get_int(b[(3 * n + 1) * l:(3 * n + 2) * l])
|
||||||
|
c3 = get_int(b[(3 * n + 2) * l:(3 * n + 3) * l])
|
||||||
|
data += [c1, c2, c3] # grey
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
DIGIT_FILE = "pi1000000.txt"
|
DIGIT_FILE = "pi1000000.txt"
|
||||||
BIN_FILE = "pi1000000bin.txt"
|
BIN_FILE = "pi1000000bin.txt"
|
||||||
|
|
||||||
bpi = ""
|
bpi = ""
|
||||||
|
|
||||||
if os.path.isfile(BIN_FILE):
|
if os.path.isfile(BIN_FILE):
|
||||||
print("loading dichotomy...")
|
print("loading dichotomy...")
|
||||||
bpi = load(BIN_FILE)
|
bpi = load(BIN_FILE)
|
||||||
@@ -195,67 +202,84 @@ print("modes :")
|
|||||||
print("1:binary file")
|
print("1:binary file")
|
||||||
print("2:black & white bitmap file")
|
print("2:black & white bitmap file")
|
||||||
print("3:grey scale bitmap file")
|
print("3:grey scale bitmap file")
|
||||||
print("4:wave file")
|
print("4:color scale bitmap file")
|
||||||
|
print("5:wave file")
|
||||||
mode = tryparse_int(input("select a mode : "))
|
mode = tryparse_int(input("select a mode : "))
|
||||||
|
|
||||||
print()
|
print()
|
||||||
if mode == 1:
|
if mode == 1:
|
||||||
defname = "pi_bin"
|
defname = "pi_bin"
|
||||||
name = input("enter file name : [{}] ".format(defname)).strip()
|
name = input("enter file name : [{}] ".format(defname)).strip()
|
||||||
if len(name) == 0:
|
if len(name) == 0:
|
||||||
name = defname
|
name = defname
|
||||||
|
|
||||||
print("getting data...")
|
print("getting data...")
|
||||||
data = get_data(bpi)
|
data = get_data(bpi)
|
||||||
print("saving to file '" + name + "' ...")
|
print("saving to file '" + name + "' ...")
|
||||||
save_byte(name, data)
|
save_byte(name, data)
|
||||||
print("saved to file '" + name + "'")
|
print("saved to file '" + name + "'")
|
||||||
|
|
||||||
elif mode == 2:
|
elif mode == 2:
|
||||||
maxw = int(math.sqrt(len(bpi)))
|
maxw = int(math.sqrt(len(bpi)))
|
||||||
width = tryparse_int(input("enter image width (max:{0}): [{0}] ".format(maxw)))
|
width = tryparse_int(input("enter image width (max:{0}): [{0}] ".format(maxw)))
|
||||||
if width is None or width > maxw or width < 1:
|
if width is None or width > maxw or width < 1:
|
||||||
width = maxw
|
width = maxw
|
||||||
|
|
||||||
defname = "pi_bw_{}.bmp".format(width)
|
defname = "pi_bw_{}.bmp".format(width)
|
||||||
name = input("enter file name : [{}] ".format(defname)).strip()
|
name = input("enter file name : [{}] ".format(defname)).strip()
|
||||||
if len(name) == 0:
|
if len(name) == 0:
|
||||||
name = defname
|
name = defname
|
||||||
if not (name.endswith(".bmp")):
|
if not (name.endswith(".bmp")):
|
||||||
name += ".bmp"
|
name += ".bmp"
|
||||||
|
|
||||||
print("getting data...")
|
print("getting data...")
|
||||||
data = get_bw_bmp_data(bpi, width)
|
data = get_bw_bmp_data(bpi, width)
|
||||||
print("saving to file '" + name + "' ...")
|
print("saving to file '" + name + "' ...")
|
||||||
save_bmp(name, data, width)
|
save_bmp(name, data, width)
|
||||||
print("saved to file '" + name + "'")
|
print("saved to file '" + name + "'")
|
||||||
|
|
||||||
elif mode == 3:
|
elif mode == 3:
|
||||||
maxw = int(math.sqrt(len(bpi)) / 8)
|
l = tryparse_int(input("enter grey depth (max:8): [8] "))
|
||||||
|
if l is None or l > 8:
|
||||||
|
l = 8
|
||||||
|
if l < 1:
|
||||||
|
l = 1
|
||||||
|
maxw = int(math.sqrt(len(bpi)) / l)
|
||||||
width = tryparse_int(input("enter image width (max:{0}): [{0}] ".format(maxw)))
|
width = tryparse_int(input("enter image width (max:{0}): [{0}] ".format(maxw)))
|
||||||
if width is None or width > maxw or width < 1:
|
if width is None or width > maxw or width < 1:
|
||||||
width = maxw
|
width = maxw
|
||||||
|
defname = "pi_grey_{}_{}.bmp".format(l, width)
|
||||||
defname = "pi_grey_{}.bmp".format(width)
|
|
||||||
name = input("enter file name : [{}] ".format(defname)).strip()
|
name = input("enter file name : [{}] ".format(defname)).strip()
|
||||||
if len(name) == 0:
|
if len(name) == 0:
|
||||||
name = defname
|
name = defname
|
||||||
if not (name.endswith(".bmp")):
|
if not (name.endswith(".bmp")):
|
||||||
name += ".bmp"
|
name += ".bmp"
|
||||||
|
|
||||||
print("getting data...")
|
print("getting data...")
|
||||||
data = get_grey_bmp_data(bpi, width)
|
data = get_grey_bmp_data(bpi, width, l)
|
||||||
print("saving to file '" + name + "' ...")
|
print("saving to file '" + name + "' ...")
|
||||||
save_bmp(name, data, width)
|
save_bmp(name, data, width)
|
||||||
print("saved to file '" + name + "'")
|
print("saved to file '" + name + "'")
|
||||||
|
|
||||||
elif mode == 4:
|
elif mode == 4:
|
||||||
|
l = tryparse_int(input("enter color depth (max:8): [8] "))
|
||||||
|
if l is None or l > 8:
|
||||||
|
l = 8
|
||||||
|
if l < 1:
|
||||||
|
l = 1
|
||||||
|
maxw = int(math.sqrt(len(bpi)) / (l * 3))
|
||||||
|
width = tryparse_int(input("enter image width (max:{0}): [{0}] ".format(maxw)))
|
||||||
|
if width is None or width > maxw or width < 1:
|
||||||
|
width = maxw
|
||||||
|
defname = "pi_color_{}_{}.bmp".format(l, width)
|
||||||
|
name = input("enter file name : [{}] ".format(defname)).strip()
|
||||||
|
if len(name) == 0:
|
||||||
|
name = defname
|
||||||
|
if not (name.endswith(".bmp")):
|
||||||
|
name += ".bmp"
|
||||||
|
print("getting data...")
|
||||||
|
data = get_color_bmp_data(bpi, width, l)
|
||||||
|
print("saving to file '" + name + "' ...")
|
||||||
|
save_bmp(name, data, width)
|
||||||
|
print("saved to file '" + name + "'")
|
||||||
|
elif mode == 5:
|
||||||
channels = tryparse_int(input("number of channels (max:6) : [1] "))
|
channels = tryparse_int(input("number of channels (max:6) : [1] "))
|
||||||
if channels is None or channels <= 0:
|
if channels is None or channels <= 0:
|
||||||
channels = 1
|
channels = 1
|
||||||
if channels > 6:
|
if channels > 6:
|
||||||
channels = 6
|
channels = 6
|
||||||
|
|
||||||
freq = tryparse_int(input("frequency (1->11k, 2->22k, 3->44.1k, 4->48k 5->96k) : [3] "))
|
freq = tryparse_int(input("frequency (1->11k, 2->22k, 3->44.1k, 4->48k 5->96k) : [3] "))
|
||||||
if freq is None:
|
if freq is None:
|
||||||
freq = 3
|
freq = 3
|
||||||
@@ -264,26 +288,25 @@ elif mode == 4:
|
|||||||
if freq > 5:
|
if freq > 5:
|
||||||
freq = 5
|
freq = 5
|
||||||
freq = int(11025 * math.pow(2, freq - 1))
|
freq = int(11025 * math.pow(2, freq - 1))
|
||||||
|
|
||||||
bps = tryparse_int(input("bits per sample (1->8, 2->16, 3->24) : [1] "))
|
bps = tryparse_int(input("bits per sample (1->8, 2->16, 3->24) : [1] "))
|
||||||
if bps is None or bps <= 0:
|
if bps is None or bps <= 0:
|
||||||
bps = 1
|
bps = 1
|
||||||
if bps > 3:
|
if bps > 3:
|
||||||
bps = 6
|
bps = 6
|
||||||
bps *= 8
|
bps *= 8
|
||||||
|
|
||||||
defname = "pi_{}_{}_{}.wav".format(channels, bps, int(freq / 1000))
|
defname = "pi_{}_{}_{}.wav".format(channels, bps, int(freq / 1000))
|
||||||
name = input("enter file name : [{}] ".format(defname)).strip()
|
name = input("enter file name : [{}] ".format(defname)).strip()
|
||||||
if len(name) == 0:
|
if len(name) == 0:
|
||||||
name = defname
|
name = defname
|
||||||
if not (name.endswith(".wav")):
|
if not (name.endswith(".wav")):
|
||||||
name += ".wav"
|
name += ".wav"
|
||||||
|
|
||||||
print("getting data...")
|
print("getting data...")
|
||||||
data = get_data(bpi)
|
data = get_data(bpi)
|
||||||
print("saving to file '" + name + "' ...")
|
print("saving to file '" + name + "' ...")
|
||||||
save_wav(name, data, channels, freq, bps)
|
save_wav(name, data, channels, freq, bps)
|
||||||
print("saved to file '" + name + "'")
|
print("saved to file '" + name + "'")
|
||||||
|
|
||||||
print()
|
print()
|
||||||
print("goodbye")
|
print("goodbye")
|
||||||
|
|
||||||
|
|
||||||
|
main()
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 46 KiB |
Reference in New Issue
Block a user