☰
猿人学 第七题 动态字体,随风漂移
2026/10/10 6:04:41 网站建设 项目流程

这个题其实没什么好说的,给你们脚本,直接当工具用就好

import requests import execjs from font import extract_text_from_font def get_num(obj, data): sum = 0 for item in data: mmm = 0 for i in range(0, len(item), 7): s = item[i : i + 7] for j in obj: if s == j: if obj[j] == 'o': obj[j] = '0' mmm = mmm * 10 + int(obj[j]) sum += mmm print(sum) return sum def get_pho(woff): f = open("07.js", "r", encoding="utf-8") js_code = f.read() f.close() js = execjs.compile(js_code) js.call("de", woff) def get_base(): sum = 0 for i in range(1, 6): url = "https://match.yuanrenxue.cn/api/question/7" headers = { "accept": "application/json, text/javascript, */*; q=0.01", "accept-encoding": "gzip, deflate, br, zstd", "accept-language": "zh-CN,zh;q=0.9", "cache-control": "no-cache", "cookie": "Hm_lvt_434c501fe98c1a8ec74b813751d4e3e3=1779001012; Hm_lvt_f80b2b389f44bbfb3bfe1704817d44e0=1780731259,1783231638; sessionid=2op20261dehuwjd7asnghz331b4nwexr", "pragma": "no-cache", "priority": "u=1, i", "referer": "https://match.yuanrenxue.cn/match/7", "sec-ch-ua": "Not/A)Brand;v=99, Chromium;v=148", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "Windows", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-origin", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36", "x-requested-with": "XMLHttpRequest" } if i == 5: headers["user-agent"] = 'yuanrenxue' params = { "page": i, "pageSize": "10", "kw": "" } res = requests.get(url, headers=headers, params=params) woff = res.json().get("woff") data = res.json().get("data") get_pho(woff) obj = extract_text_from_font("font.woff") sum += get_num(obj, data) print(sum) if __name__ == '__main__': get_base()
const fs = require('fs'); de = function (base){ const buffer = Buffer.from(base, 'base64'); fs.writeFileSync('font.woff', buffer); } // base = "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" // de(base)
import ddddocr from fontTools.ttLib import TTFont from io import BytesIO from PIL import Image, ImageDraw, ImageFont import os """ 将字体字符转换为图像 :param cmap_code: 字体字符对应的 cmap code :param font_path: 字体文件路径 :return: PIL 图像对象 """ def convert_cmap_to_image(cmap_code, font_path): img_size = 1024 img = Image.new("1", (img_size, img_size), 255) # 创建一个黑白图像对象 draw = ImageDraw.Draw(img) # 创建绘图对象 font = ImageFont.truetype(font_path, int(img_size * 0.7)) # 加载字体文件 character = chr(cmap_code) # 将 cmap code 转换为字符 bbox = draw.textbbox((0, 0), character, font=font) # 获取文本在图像中的边界框 width= bbox[2] - bbox[0] #文本的宽度 height = bbox[3] - bbox[1] # 文本的高度 draw.text(((img_size - width) // 2, (img_size - height) // 7), character, font=font, fill=0) # 绘制文本,并居中显示 return img def extract_text_from_font(font_path): font = TTFont(font_path) # 加载字体文件 # font.saveXML("xxx.xml") ocr = ddddocr.DdddOcr(beta=True, show_ad=False) # 实例化 ddddocr 对象 font_map = {} for cmap_code, glyph_name in font.getBestCmap().items(): bytes_io = BytesIO() image = convert_cmap_to_image(cmap_code, font_path) # 将字体字符转换为图像 image. save(bytes_io, "PNG") text = ocr.classification(bytes_io.getvalue()) # 图像识别 # image.save(f"./tu/{text}.png", "PNG") # 保存图像 # print(f"Unicode码点: {cmap_code} - Unicode字符:{glyph_name},识别结果:{text}") font_map[hex(cmap_code).replace("0x", "&#x")] = text os.remove(font_path) return font_map if __name__ == '__main__': font_file_path = "font.woff" # print(extract_text_from_font(font_file_path))

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询