Erster Commit: nativer Linux-Port aus macOS-Bytecode
Läuft die Voice Acoustic VA-Remotecontrol (AllDSP AllControl) nativ unter Linux auf echtem wxGTK 3.0 — ohne Wine und ohne dekompilierten App-Code. Ausgeführt wird das unveränderte Python-2.7-Bytecode aus dem macOS-.app; C-Extensions (wxGTK/numpy/ scipy/PortAudio) kommen nativ aus Debian stretch. Enthält: va/ (Original-.pyc + pure-Python-Libs + Assets + launch.py mit den drei Linux-Fixes), Dockerfile/run.sh/entrypoint.sh, reference/ (dekompilierter Quellcode zum Debuggen) und README/STATUS. img.cache (378 MB, regenerierbar) ist per .gitignore ausgeschlossen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
"Test issue 33 (Cannot import GIF files that don't have transparency)"
|
||||
|
||||
from fpdf import FPDF, FPDF_VERSION
|
||||
|
||||
import os, tempfile
|
||||
try:
|
||||
import Image
|
||||
except:
|
||||
from PIL import Image
|
||||
|
||||
def genbar():
|
||||
# bg
|
||||
bg = Image.new("L", (112, 1), 1)
|
||||
bg = bg.resize((112, 11))
|
||||
# stripes
|
||||
vbarnum = [0x4F43484B, 0xEE90D642, 0xF11A2735, 0xD71A]
|
||||
vbar = Image.new("L", (112, 1), 1)
|
||||
pix = vbar.load()
|
||||
pos = 0
|
||||
for b in vbarnum:
|
||||
for i in range(32):
|
||||
pix[pos, 0] = 0 if (b & 1) else 1
|
||||
b = b >> 1
|
||||
pos += 1
|
||||
if pos >= 112: break
|
||||
vbar = vbar.resize((112, 31), Image.NEAREST)
|
||||
# digit
|
||||
dignum = [0x398, 0x6dc, 0x61a, 0x31b, 0x1bf, 0x6d8, 0x7d8]
|
||||
dbar = Image.new("L", (16, 7), 1)
|
||||
pix = dbar.load()
|
||||
pos = 0
|
||||
ypos = 0
|
||||
for b in dignum:
|
||||
for i in range(16):
|
||||
pix[pos, ypos] = 0 if (b & 1) else 1
|
||||
b = b >> 1
|
||||
pos += 1
|
||||
ypos += 1
|
||||
pos = 0
|
||||
# result
|
||||
bar = Image.new("L", (114, 44), 2)
|
||||
bar.paste(vbar, (1, 1))
|
||||
bar.paste(bg, (1, 32))
|
||||
for i in range(4):
|
||||
bar.paste(dbar, (35 + i * 12, 34))
|
||||
return bar
|
||||
|
||||
|
||||
plane = genbar()
|
||||
palette = (0,0,0, 255,255,255) + (128,128,128)*254
|
||||
img = Image.fromstring("P", plane.size, plane.tostring())
|
||||
img.putpalette(palette)
|
||||
|
||||
f = tempfile.NamedTemporaryFile(delete = False, suffix = ".gif")
|
||||
gif1 = f.name
|
||||
f.close()
|
||||
f = tempfile.NamedTemporaryFile(delete = False, suffix = ".gif")
|
||||
gif2 = f.name
|
||||
f.close()
|
||||
|
||||
|
||||
img.save(gif1, "GIF")
|
||||
|
||||
img.save(gif2, "GIF", transparency = 1)
|
||||
|
||||
|
||||
pdf=FPDF()
|
||||
pdf.compress = False
|
||||
pdf.add_page()
|
||||
pdf.set_font('Arial', '', 16)
|
||||
pdf.write(8, "Transparency")
|
||||
pdf.ln()
|
||||
pdf.write(8, " Transparency")
|
||||
pdf.ln()
|
||||
pdf.write(8, " Transparency")
|
||||
pdf.ln()
|
||||
pdf.image(gif1, x = 15, y = 15)
|
||||
|
||||
pdf.write(8, "Transparency")
|
||||
pdf.ln()
|
||||
pdf.write(8, " Transparency")
|
||||
pdf.ln()
|
||||
pdf.write(8, " Transparency")
|
||||
pdf.ln()
|
||||
pdf.image(gif2, x = 15, y = 39)
|
||||
|
||||
fn = 'issue33.pdf'
|
||||
pdf.output(fn,'F')
|
||||
|
||||
|
||||
os.unlink(gif1)
|
||||
os.unlink(gif2)
|
||||
|
||||
try:
|
||||
os.startfile(fn)
|
||||
except:
|
||||
os.system("xdg-open \"%s\"" % fn)
|
||||
Reference in New Issue
Block a user