当前位置: 首页 > news >正文

《学做网站论坛》视频下载外贸圈的尖子生

《学做网站论坛》视频下载,外贸圈的尖子生,seo单词优化,非响应式网站改响应式最近看蛮多朋友在玩,要么只能画比较简单的,要么非常花时间。想了下本质上就是把excel对应的单元格涂色,如果能知道哪些格子要上什么颜色,用编程来实现图片转为excel十字绘应该是很方便的。 图片的每一个像素点都可以数值化&#x…
最近看蛮多朋友在玩,要么只能画比较简单的,要么非常花时间。想了下本质上就是把excel对应的单元格涂色,如果能知道哪些格子要上什么颜色,用编程来实现图片转为excel十字绘应该是很方便的。
图片的每一个像素点都可以数值化,那么将构成图片的每一个像素点填充到excel的单元格中去,然后合理调整单元格长宽比便可以拼成一副画。反过来想,用一张单元格足够小的excel表格将图片蒙上一层,犹如用 一张网去切割这张图片,图片被切割成一小块一小块 ,如果网格足够细,每一小块里面的颜色几乎只有一种,这样就可以用一个三元组(RGB)来刻画 ,这样一张图片就可以由一个很大的矩阵来刻画 ,矩阵中的每一个元素都是一个 RGB三元组。不管从图片到excel还是从excel到图片,我们都可以构建一个一一映射关系,我们便可以依循这个理论在excel作画。
网上搜索了下用python就可以实现,主要是以下两个模块:
  • Pillow(PIL,Python Imaging Library):强大的图形处理库
  • openpyxl:用于操作excel的模板,之前也用到过

代码主要来自:程序员如何 10 分钟用 Python 画出蒙娜丽莎? - 知乎

直接运行会有报错,需要稍微修改:

  • 获取列信息:新版本修改了属性名,用原文的会报错
# 修正前
column = col[0].column
# 修正後
column = col[0].column_letter
  • 调整列宽部分:原文的1会让图片变得奇扁无比,测试设为8大小会比较合适
 worksheet.column_dimensions[_w].width = 8
  • 调整单元格大小:相对来说400更清晰
MAX_WIDTH = 400
MAX_HEIGHT = 400

修改后代码如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#@Time  : 2023/09/10
#@Author: Hehuyi_In
#@File  : picture_to_excel.pyfrom PIL import Image
import openpyxl
from openpyxl.styles import fills
import osMAX_WIDTH = 400
MAX_HEIGHT = 400# excel的单元格默认是长方形,修改为正方形才不会使图片变形
# 调整excel每个单元格大小,避免图片过大,excel无法打开
# 过小电子画会过于模糊,太大excel可能无法打开
def resize(img):w, h = img.sizeif w > MAX_WIDTH:h = MAX_WIDTH / w * hw = MAX_WIDTHif h > MAX_HEIGHT:w = MAX_HEIGHT / h * wh = MAX_HEIGHTreturn img.resize((int(w), int(h)), Image.ANTIALIAS)# 整型转16进制
# getpixel()获取的颜色值是rgb十进制的,但fills.PatternFill 里的fgColor`参数接收到的颜色值是十六进制的值,因此需要转换
def int_to_16(num):num1 = hex(num).replace('0x', '')# 位数只有一位时在前面补零num2 = num1 if len(num1) > 1 else '0' + num1return num2# 绘图函数
def draw_jpg(img_path):# 打开图片img_pic = resize(Image.open(img_path))img_name = os.path.basename(img_path)# 输出的excel名,若已存在则删除out_file = img_name.split('.')[0] + '.xlsx'if os.path.exists(out_file):os.remove(out_file)# 新建一个excel文件workbook = openpyxl.Workbook()# 激活一个工作表(sheet)worksheet = workbook.activewidth, height = img_pic.size# 循环处理图片中的每个像素for w in range(1, width + 1):for h in range(1, height + 1):# getpixel函数用于获取像素色彩值,入参为像素坐标if img_pic.mode == 'RGB':r, g, b = img_pic.getpixel((w - 1, h - 1))elif img_pic.mode == 'RGBA':r, g, b, a = img_pic.getpixel((w - 1, h - 1))# 将rgb值转换为16进制hex_rgb = int_to_16(r) + int_to_16(g) + int_to_16(b)# 定位每个单元格cell = worksheet.cell(column=w, row=h)# 第一行if h == 1:_w = cell.column_letter_h = cell.col_idx# 调整列宽worksheet.column_dimensions[_w].width = 8# 调整行高worksheet.row_dimensions[h].height = 45# 填充颜色,fill_type是填充类型,fgColor是填充的颜色cell.fill = fills.PatternFill(fill_type="solid", fgColor=hex_rgb)print('saving...')workbook.save(out_file)print('success!')if __name__ == '__main__':draw_jpg('lyx.jpg')

效果图,以我这个头像为例(excel画出来的图太大了,这里截了一部分)

这要是手工画一张不得画几个月...但通过程序可以直接秒出,牛哇~

参考
https://zhuanlan.zhihu.com/p/95720761
https://blog.51cto.com/u_15255081/6164226
https://blog.csdn.net/weixin_43790276/article/details/108478270
https://qiita.com/gorimacho/items/63707223e692f7401988

http://www.yayakq.cn/news/831173/

相关文章:

  • nodejs网站开发实例顺德大良做网站
  • 移动网站搭建wordpress 投稿
  • 宝格丽网站建设策划案物联网平台软件开发
  • 邢台市做网站网站优化关键词排名自己怎么做
  • 小鱼儿外贸建站网站建设与网络编辑综合实训课程指导手册pdf
  • 余姚做网站濮阳信息港网首页
  • 做网站怎么变现禄劝彝族苗族网站建设
  • 如何做网站内容架构分析北京自考网官方网站
  • 贵州微信网站建设手机wordpress主题
  • 婚恋网站如何做推广用主机宝建立的网站上传之后404
  • 网站侧边栏导航代码用html5做的静态网站
  • 企业网站建设论坛网站网页制作及优化
  • 芜湖小学网站建设新网站怎么做seo
  • 网站建设许可证网站首页被k咋办
  • 电商网站开发设计方法cpanel做wordpress
  • 企业网站宣传方案建设银行 福建分行招聘网站
  • 漳州网站建设哪家最权威做网站多大
  • 石景山富阳网站建设saas电商平台
  • 常州本地网站网站建设方面的书籍
  • 检查网站的死链接wordpress纯静态化插件
  • 北京网站外包公司论述网站推广的方法与技巧
  • 简述制作网站的流程百度seo最成功的优化
  • 网站备案完成后淘宝网站推广怎么做
  • 民间it网站建设模板制作过程
  • 阿里图标库谁做的网站百度网址大全官网
  • 什么软件做高级网站网站设计制作推荐
  • 做网站建设价格包头网站设计公司
  • 免费建立个人网站官网免费国外网站模板
  • 中国电信网站备案系统重复打开同一个网站怎么做
  • 相对于网站根目录的的绝对路径中国品牌vi设计公司