mirror of
https://github.com/jwinterm/py-ticker.git
synced 2026-10-17 05:41:39 +02:00
71 lines
2.8 KiB
Python
71 lines
2.8 KiB
Python
from PIL import Image, ImageChops, ImageFont, ImageDraw
|
|
import cmc
|
|
import os
|
|
|
|
def trim(im):
|
|
bg = Image.new(im.mode, im.size, im.getpixel((0,0)))
|
|
diff = ImageChops.difference(im, bg)
|
|
diff = ImageChops.add(diff, diff, 2.0, -100)
|
|
bbox = diff.getbbox()
|
|
if bbox:
|
|
return im.crop(bbox)
|
|
|
|
def imggen():
|
|
cmcdata = cmc.getcmc()
|
|
# font = ImageFont.truetype("/usr/share/fonts/truetype/msttcorefonts/arial.ttf",16)
|
|
|
|
font = ImageFont.truetype("Ubuntu-B.ttf",16)
|
|
|
|
coinimglist = []
|
|
for root, dirs, files in os.walk("img/coins/"):
|
|
for file in files:
|
|
if file.endswith(".png"):
|
|
coinimglist.append(os.path.join(root, file))
|
|
# print(coinimglist)
|
|
widthlist = []
|
|
toptenlist = []
|
|
|
|
leaderimg = Image.new("RGBA", (400,16), (200,240,255,255))
|
|
draw = ImageDraw.Draw(leaderimg)
|
|
draw.text((0,0), "Rank | Coin | Market Cap | Price (USD)", (0,0,0), font=font)
|
|
leaderimg = trim(leaderimg)
|
|
widthlist.append(leaderimg.size[0])
|
|
leaderimg.save("img/temp/leader.png")
|
|
|
|
for idx,val in enumerate(cmcdata):
|
|
if idx == 0:
|
|
img = Image.new("RGBA", (400,16), (200,255,200,255))
|
|
else:
|
|
img = Image.new("RGBA", (400,16), (225,225,225,255))
|
|
draw = ImageDraw.Draw(img)
|
|
text = "#{} | {} | ${:,.0f} | ${:.2f}".format(val['rank'], val['symbol'], float(val['market_cap_usd']), float(val['price_usd']))
|
|
draw.text((0,0), text, (0,0,0), font=font)
|
|
img = trim(img)
|
|
img.save("img/temp/{}.png".format(val['id']))
|
|
widthlist.append(img.size[0])
|
|
toptenlist.append(val['id'])
|
|
|
|
x_offset = 0
|
|
tickerimg = Image.new("RGBA", (sum(widthlist)+300,16), (255,255,255,255))
|
|
tickerimg.paste(leaderimg, (x_offset, 0))
|
|
x_offset += widthlist[0]
|
|
|
|
for idx,val in enumerate(toptenlist):
|
|
coinimg = Image.open("img/coins/unknown.png")
|
|
for i in coinimglist:
|
|
# print(cmcdata[idx]['id'], coinimglist[idx])
|
|
if cmcdata[idx]['id'] in i:
|
|
coinimg = Image.open("img/coins/{0}.png".format(cmcdata[idx]['id']))
|
|
textimg = Image.open("img/temp/{0}.png".format(cmcdata[idx]['id']))
|
|
# arr = np.array(coinimg)
|
|
# print(arr)
|
|
# coinimgbg = Image.new("RGBA", (16,16), (255,255,255,255))
|
|
# print("Size of coinimg is {}, and size of coinimgbg is {}".format(coinimg.size, coinimgbg.size))
|
|
# print("Mode of coinimg is {}, and mode of coinimgbg is {}".format(coinimg.mode, coinimgbg.mode))
|
|
# coinimg = Image.alpha_composite(coinimgbg, coinimg)
|
|
tickerimg.paste(coinimg, (x_offset+10, 0))
|
|
tickerimg.paste(textimg, (x_offset+26, 0))
|
|
x_offset += widthlist[idx+1] + 26
|
|
tickerimg.save("img/temp/ticker.png")
|
|
print("Ticker image size = {}".format(tickerimg.size))
|