转跳到内容

【脚本】四面体的表格作画教程~


推荐贴

发布于 · 只看该作者

前言

:SS08:

表格是同盟常见的排版工具。

经过同盟诸多科研人士近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 safcz 100.00节操 既然魔女都肯定了,建议加入魔法表格豪华套餐
Dorothy Dorothy 100.00节操 奖励一颗✨,表格魔法的未来就靠你们啦!~🌌
TsumiKAMI TsumiKAMI 66.00节操 超高性能的 转换器+反应炉
Woodburn Woodburn 66.00节操 Wonderful,四面体,摩多摩多
MCIN MCIN 66.00节操 还得是编程大佬
发布于 (已修改) · 只看该作者

恭喜,阁下开启了新的排版次元!同时成功召唤本魔女~:NEKOMIMI_PARADISE_8:

(解锁成就:重生之我在同盟用表格做脚本x)

咱一直都相信同盟虽然换版本了没有以前那么方便地用代码编辑表格,但都有突破现有表格编辑的可能性,现在又有新的思路启发大家,功不可没呀小伙伴~

期待今后继续朝着低门槛和高实用前进吧!:Genshin_HuTao_004:

,由Dorothy修改

Dorothy穿越到里区后,遇见了一只九尾狐狸,完成了她交付的汉化任务后被抚摸。4节操

发布于 · 只看该作者
10 小时前,Tokur说道:

:2056385457_SSA(5):卧槽,还有这种点子,我怎么没想到过

:NEKOMIMI_PARADISE_11:四面体可是高性能的说~

6 小时前,Dorothy说道:

恭喜,阁下开启了新的排版次元!同时成功召唤本魔女~:NEKOMIMI_PARADISE_8:

(解锁成就:重生之我在同盟用表格做脚本x)

咱一直都相信同盟虽然换版本了没有以前那么方便地用代码编辑表格,但都有突破现有表格编辑的可能性,现在又有新的思路启发大家,功不可没呀小伙伴~

期待今后继续朝着低门槛和高实用前进吧!:Genshin_HuTao_004:

:SS08:成功召唤了魔女大人的说~

现在的脚本还有很多改进方向的说~

  • 开箱即用:同盟很多用户并没有安装Python
    • 如果能做成浏览器脚本的话使用门槛可以降低
    • 这方面热心群众已经开始改善的说~ 热心群众是皮卡丘的说~
  • 性能优化:现在的方法生成的单元格数量很多
    • 可以使用不同尺寸的单元格降低数量
  • 最终效果:单元格颜色的选取可以优化
    • 如果能选更好的颜色的话,那样成品表格能够更加接近原图

欢迎同盟群众们一起改进的说~

创建帐号或登入才能点评

您必须成为用户才能点评

创建帐号

在我们社区注册个新的帐号。非常简单!

注册新帐号

登入

已有帐号? 登入

现在登入
×
×
  • 新建...

重要消息

为使您更好地使用该站点,请仔细阅读以下内容: 使用条款