tetrohedro 发布于昨日 09:15 发布于昨日 09:15 · 只看该作者 前言 表格是同盟常见的排版工具。 经过同盟诸多科研人士近10年的科研积累,对于表格的应用似乎已经抵达了极限。 但是,作为高性能的四面体,我要打破这10年的僵局,开创新的领域~ 借助脚本的力量,我们可以用表格实现像素级的排版效果~ 甚至可以用表格作画,将任何的图片转换成表格~ 展示 代码 #!/usr/bin/env python3 """Convert an image to an HTML table where each cell represents a pixel.""" from PIL import Image import sys import os def image_to_html_table(image_path, output_path, width=120, grayscale=False): """Convert an image to an HTML table. Args: image_path: Path to the input image output_path: Path for the output HTML file width: Target width in cells (height calculated to maintain aspect ratio) grayscale: If True, convert to grayscale; otherwise use color """ # Load the image img = Image.open(image_path) # Calculate new height to maintain aspect ratio aspect_ratio = img.height / img.width height = int(width * aspect_ratio) # Resize the image img = img.resize((width, height), Image.Resampling.LANCZOS) # Convert to grayscale or RGB if grayscale: img = img.convert('L') else: img = img.convert('RGB') # Get pixel data pixels = list(img.getdata()) # Build HTML html = """<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Image - HTML Table</title> </head> <body> <table style="border-collapse:collapse;table-layout:fixed"> """ # Generate table rows for y in range(height): html += " <tr>" for x in range(width): if grayscale: pixel_value = pixels[y * width + x] hex_color = f"#{pixel_value:02x}{pixel_value:02x}{pixel_value:02x}" else: r, g, b = pixels[y * width + x] hex_color = f"#{r:02x}{g:02x}{b:02x}" html += f'<td style="background-color:{hex_color};width:6px;height:6px;padding:0;line-height:0"></td>' html += "</tr>\n" html += """ </table> </body> </html> """ # Write output with open(output_path, 'w') as f: f.write(html) print(f"Generated HTML table: {output_path}") print(f"Dimensions: {width}x{height} cells") if __name__ == "__main__": import argparse parser = argparse.ArgumentParser(description="Convert an image to an HTML table") parser.add_argument("image_path", help="Path to the input image") parser.add_argument("-w", "--width", type=int, default=120, help="Target width in cells (default: 120)") parser.add_argument("-g", "--grayscale", action="store_true", help="Convert to grayscale (default: color)") args = parser.parse_args() # Derive output path from input filename base_name = os.path.splitext(os.path.basename(args.image_path))[0] output_path = f"{base_name}_table.html" image_to_html_table(args.image_path, output_path, args.width, args.grayscale) 使用方法 只要将以上的代码保存为python脚本,并且提供图片路径直接运行即可~ 比如: python3 main.py pikachu.jpg 如果需要压缩表格的话,可以通过-w选项指定表格的长度~ python3 main.py pikachu.jpg -w 60 提供--grayscale选项可以生成黑白的表格的说~ python3 main.py pikachu.jpg --grayscale 风险:如果过分使用,saka君可能会开始磨刀的说~ 注释 safcz 100.00节操 既然魔女都肯定了,建议加入魔法表格豪华套餐 Dorothy 100.00节操 奖励一颗✨,表格魔法的未来就靠你们啦!~🌌 TsumiKAMI 66.00节操 超高性能的 转换器+反应炉 Woodburn 66.00节操 Wonderful,四面体,摩多摩多 MCIN 66.00节操 还得是编程大佬 6
tetrohedro 发布于昨日 10:22 作者 发布于昨日 10:22 · 只看该作者 2 分钟前,safcz说道: 这就是最终方案了吗 比起上次的版本,追加了彩色支持的说~ 剧透 召唤表格之神们: @Dorothy @gocallle @Tokur
tetrohedro 发布于昨日 10:46 作者 发布于昨日 10:46 · 只看该作者 19 分钟前,MCIN说道: 好恐怖的代码!!!居然能通过脚本做到这种事情吗!? 为了用表格展现出彩色的皮卡丘,四面体可以突破极限的说~
Dorothy 发布于昨日 16:33 发布于昨日 16:33 (已修改) · 只看该作者 恭喜,阁下开启了新的排版次元!同时成功召唤本魔女~ (解锁成就:重生之我在同盟用表格做脚本x) 咱一直都相信同盟虽然换版本了没有以前那么方便地用代码编辑表格,但都有突破现有表格编辑的可能性,现在又有新的思路启发大家,功不可没呀小伙伴~ 期待今后继续朝着低门槛和高实用前进吧! 昨日 16:33,由Dorothy修改 Dorothy穿越到里区后,遇见了一只九尾狐狸,完成了她交付的汉化任务后被抚摸。4节操 1
tetrohedro 发布于22 小时前 作者 发布于22 小时前 · 只看该作者 10 小时前,Tokur说道: 卧槽,还有这种点子,我怎么没想到过 四面体可是高性能的说~ 6 小时前,Dorothy说道: 恭喜,阁下开启了新的排版次元!同时成功召唤本魔女~ (解锁成就:重生之我在同盟用表格做脚本x) 咱一直都相信同盟虽然换版本了没有以前那么方便地用代码编辑表格,但都有突破现有表格编辑的可能性,现在又有新的思路启发大家,功不可没呀小伙伴~ 期待今后继续朝着低门槛和高实用前进吧! 成功召唤了魔女大人的说~ 现在的脚本还有很多改进方向的说~ 开箱即用:同盟很多用户并没有安装Python 如果能做成浏览器脚本的话使用门槛可以降低 这方面热心群众已经开始改善的说~ 热心群众是皮卡丘的说~ 性能优化:现在的方法生成的单元格数量很多 可以使用不同尺寸的单元格降低数量 最终效果:单元格颜色的选取可以优化 如果能选更好的颜色的话,那样成品表格能够更加接近原图 欢迎同盟群众们一起改进的说~
推荐贴
创建帐号或登入才能点评
您必须成为用户才能点评
创建帐号
在我们社区注册个新的帐号。非常简单!
注册新帐号登入
已有帐号? 登入
现在登入