爬取的數據怎麼保存為圖片?
將爬取的數據通過pandas處理之後,將顯示結果保存為圖片,請問怎麼能辦到呢?如下圖,怎麼講結果輸出為圖片?新手小白,找了很多資料都不知道怎麼操作,煩請大神指點一二,感激不盡!PS:我的最終用途是為了能夠在微信公眾號里,通過關鍵詞回復這一張圖片,如果有其他方式也能實現類似結果,也請解答一下吧,謝謝了!
支持截屏,再用圖像處理剪裁
我這兒有個相似的常式,你可以參考下:
效果圖,在圖片上添加文字:
python3代碼:
import os
import random
import time
from PIL import Image, ImageFont, ImageDraw
# 選擇圖片
img_list = os.listdir("./wallpaper/")
img_name = "./wallpaper/" + random.choice(img_list)
# 打開圖片
img = Image.open(img_name)
im = img.transpose(Image.ROTATE_90) #旋轉90°
draw = ImageDraw.Draw(im)
# 計算日期區域RGB均值
count = 0
R, G, B = 0, 0, 0
for width in range(im.size[0] // 2 - 300, im.size[0] // 2 + 340):
for high in range(im.size[1] // 2 - 90, im.size[1] // 2 + 80):
R += im.getpixel((width, high))[0]
G += im.getpixel((width, high))[1]
B += im.getpixel((width, high))[2]
count += 1
R = 255 - (R // count)
G = 255 - (G // count)
B = 255 - (B // count)
# 在圖片上添加日期
write_string = "{}年{}月{}日
"
" News".format(time.localtime().tm_year,time.localtime().tm_mon,time.localtime().tm_mday)
newfont = ImageFont.truetype("simkai.ttf", 120)
draw.text((im.size[0] // 2 - 440, im.size[1] // 2 - 100), write_string, (R, G, B), font=newfont)
# 計算來源區域RGB均值
count = 0
R, G, B = 0, 0, 0
for width in range(im.size[0] //2 - 200, im.size[0]):
for high in range(im.size[1] - 180, im.size[1]):
R += im.getpixel((width, high))[0]
G += im.getpixel((width, high))[1]
B += im.getpixel((width, high))[2]
count += 1
if (R+G+B)//3//count&>128:
pixel = 0
else:
pixel = 255
R = 255 - (R // count)
G = 255 - (G // count)
B = 255 - (B // count)
# 在圖片上添加來源
resouce_string = "背景出處:小米壁紙"
newfont = ImageFont.truetype("simkai.ttf", 30)
draw.text((im.size[0]//2 - 150, im.size[1] - 180), resouce_string, (pixel, pixel, pixel), font=newfont)
# 另存為名稱
save_name = "C:/Users/ZKer/Desktop/news/wallpaper_{}.jpg".format(int(time.time()))
im.save(save_name)
其中將數據以表格形式寫入圖片參考:
python生成帶有表格的圖片 - CSDN博客,涉及到prattytable模塊的使用。
或者使用matplotlib:
參考:Python 實現圖片上表格的寫入
或者是使用webkit2png模塊,將數據做成網頁,然後導出為圖片。這個我沒有經驗,請自行搜索。
另外一個不靠譜的思路:截圖,截取屏幕然後可以裁剪之類的
LinuxWindows:
import os
import platform
from time import time
def SC():
im_name = "{}.{}".format(int(time()), "png")
im = None
if platform.system() == "Windows" or platform.system() == "Darwin":
try:
from PIL import ImageGrab
im = ImageGrab.grab()
except OSError as e:
print("截圖錯誤")
return
elif platform.system() == "Linux":
try:
import pyscreenshot as ImageGrab
im = ImageGrab.grab()
except OSError as e:
print("截圖錯誤")
return
im.save(im_name)
推薦閱讀: