PICT Tool (Transparency Compression)
@@ -0,0 +1,58 @@
+# ImageBuilder PICT tool (Transparency compression version) by Raccoon Sam
+# Be sure to have Pillow for Python installed!
+
+def getB(number=1):
+ return int.from_bytes(rom.read(number), byteorder='big')
+
+import struct
+from PIL import Image
+
+# Change the file directories to whatever necessary
+filelist = ["/Users/Foobar/EXAMPLE_FILE1.PICT",
+"/Users/Foobar/EXAMPLE_FILE2.PICT",
+"/Users/Foobar/EXAMPLE_FILE3.PICT"]
+
+for n in range(0, len(filelist)):
+ currentfilename = filelist[n]
+
+ with open(currentfilename, "rb") as rom:
+ rom.seek(0)
+ insPtr = getB(2)
+ amount = ((insPtr-2) >> 1) & 0xFFFFFFFE
+ height = amount >> 1
+ rom.seek(0)
+
+ insPtrList = struct.unpack(">{:d}H".format(height), rom.read(height<<1))
+ datPtrList = list(struct.unpack(">{:d}H".format(height), rom.read(height<<1)))
+ eof = getB(2)
+ inslist = []
+ for x in range(0, len(insPtrList)-1):
+ rom.seek(insPtrList[x])
+ lenval = insPtrList[x+1]-insPtrList[x]
+ inslist.append(list(struct.unpack("{:d}B".format(lenval), rom.read(lenval))))
+
+ rowcount = 0
+ master_pixel_array = []
+
+ canvas = Image.new("RGBA", (sum(inslist[0]),height))
+ while inslist:
+ que = inslist.pop(0)
+ rgba_root = datPtrList[rowcount]
+ rom.seek(rgba_root)
+
+ z = True
+ while que:
+ pixlen = que.pop(0)
+ if z:
+ for pix in range(0, pixlen):
+ master_pixel_array.append((0, 0, 0, 0))
+ z = not z
+ continue
+ for pix in range(0, pixlen):
+ _a, _r, _g, _b = getB(), getB(), getB(), getB()
+ master_pixel_array.append((_r, _g, _b, 255-_a))
+ z = not z
+ rowcount += 1
+
+ canvas.putdata(master_pixel_array)
+ canvas.save(currentfilename+".png")
\ No newline at end of file