zoukankan      html  css  js  c++  java
  • 用Excel表达图片如何由像素点构成

    0 写在前面

    对图像入门一点,或者看过一些儿时低像素任天堂游戏的小伙伴们大概对像素点构成图片有一定认知,本篇将用Excel来表达这一思路,如下原图:
    在这里插入图片描述
    在Excel中可以表示如下:
    在这里插入图片描述
    在这里插入图片描述
    可以看到这里将Excel中的每个格子当作一个像素点,每个格子里面是每个像素点的rgb值。具体如何做到见下文。

    1 现将原始jpg转成文本形式

    为了方便就处理jpg格式的图像,这里使用python语言,如下:

    ## 读取图像像素RGB值
    
    from PIL import Image
    
    imload= Image.open('test.jpg')
    im=imload.convert("RGB")
    width,height=im.size
    demo=open('rgb.txt','a')
    
    for y in range(height):
        for x in range(width):
            rgb=im.getpixel((x,y))
            rgb=str(rgb)
            demo.write(rgb[1:-1]+"	")
        demo.write("
    ")
    demo.close()
    

    将原始图像改名为test.jpg再运行上述程序就会生成一个rgb.txt

    2 使用Excel打开文本

    将第一步生成的rgb.txt直接用Excel打开,打开时会弹出一些转换事项,直接下一步即可,注意需要调整格子的大小使每个格子呈现正方形以便实现较好的效果,此处演示略。

    3 使用VBA还原原始jpg

    VBA就是Excel里面的宏,此时可以新建一个Set_RGB宏,复制以下代码,注意更改最大列标,以及去掉"//"在内的注释,如下:

    Sub Set_RGB()
        Dim r As Range,arr
        For Each r In Range("A:xxx")  //xxx为最大列标,点击一个格子然后ctrl+方向右键就能跳到最大列
            arr = Split(R,",")
            r.Interior.Color = RGB(CInt(arr(0)),CInt(arr(1)),CInt(arr(2)))
        Next
    End Sub
    

    然后运行,可能会出现下标越界等情况,不用管它,直接回到excel就会发现已经生成,然后就能见到第0节中的效果,此时另存为Excel文件并保存宏就可以展现给别人看啦。

  • 相关阅读:
    洛谷 P2108 学英语
    洛谷 P1010 幂次方
    洛谷 P1101 单词方阵
    洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes
    洛谷 P1553 数字反转(升级版)
    hdu_1348_Wall(凸包)
    hdu_1392_Surround the Trees(凸包)
    hdu_1115_Lifting the Stone(求多边形重心)
    Codeforces Round #354 (Div. 2)_Vasya and String(尺取法)
    hdu_1558_Segment set(并查集+计算几何)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13281707.html
Copyright © 2011-2022 走看看