python-自动篇-办公-用Excel画画

news/2024/7/21 6:10:01 标签: python, excel, swift

文章目录

  • 代码
  • 所遇问题
    • ModuleNotFoundError: No module named 'xlsxwriter'
    • FileNotFoundError: [Errno 2] No such file or directory: '111.jpg'
  • 效果
  • 附件

代码

python"># coding: utf-8

from PIL import Image
from xlsxwriter.workbook import Workbook


class ExcelPicture(object):
    FORMAT_CONSTRAINT = 65536

    def __init__(self, pic_file, ratio=0.5):
        self.__pic_file = pic_file

        self.__ratio = ratio
        self.__zoomed_out = False

        self.__formats = dict()

    # 缩小图片
    def zoom_out(self, _img):
        _size = _img.size
        _img.thumbnail((int(_img.size[0] * self.__ratio), int(_img.size[1] * self.__ratio)))

        self.__zoomed_out = True

    # 对颜色进行圆整
    def round_rgb(self, rgb, model):
        return tuple([int(round(x / model) * model) for x in rgb])

    # 查找颜色样式,去重
    def get_format(self, color):
        _format = self.__formats.get(color, None)

        if _format is None:
            _format = self.__wb.add_format({'bg_color': color})
            self.__formats[color] = _format

        return _format

    # 操作流程
    def process(self, output_file='_pic.xlsx', color_rounding=False, color_rounding_model=5.0):
        # 创建xlsx文件,并调整行列属性
        self.__wb = Workbook(output_file)
        self.__sht = self.__wb.add_worksheet()
        self.__sht.set_default_row(height=9)
        self.__sht.set_column(0, 5000, width=1)

        # 打开需要进行转换的图片
        _img = Image.open(self.__pic_file)
        print        ('Picture filename:', self.__pic_file)

        # 判断是否需要缩小图片尺寸
        if self.__ratio < 1:
            self.zoom_out(_img)

        # 遍历每一个像素点,并填充对应的颜色到对应的Excel单元格
        _size = _img.size
        print('Picture size:', _size)
        for (x, y) in [(x, y) for x in range(_size[0]) for y in range(_size[1])]:
            _clr = _img.getpixel((x, y))

            # 如果颜色种类过多,则需要将颜色圆整到近似的颜色上,以减少颜色种类
            if color_rounding: _clr = self.round_rgb(_clr, color_rounding_model)

            _color = '#%02X%02X%02X' % _clr
            self.__sht.write(y, x, '', self.get_format(_color))

        self.__wb.close()

        # 检查颜色样式种类是否超出限制,Excel2007对样式数量有最大限制
        format_size = len(self.__formats.keys())
        if format_size >= ExcelPicture.FORMAT_CONSTRAINT:
            print('Failed! Color size overflow: %s.' % format_size)
        else:
            print            ('Success!')
            print            ('Color: %s' % format_size)
            print            ('Color_rounding:', color_rounding)
            if color_rounding:
                print            ('Color_rounding_model:', color_rounding_model)


if __name__ == '__main__':
    r = ExcelPicture('111.jpg', ratio=0.5)
    r.process('0407.xlsx', color_rounding=True, color_rounding_model=5.0)

所遇问题

ModuleNotFoundError: No module named ‘xlsxwriter’

在这里插入图片描述
如果错误仍然存​​在,请获取您的 Python 版本并确保您使用正确的 Python 版本安装包。

pip3.11 install xlsxwriter

在这里插入图片描述

FileNotFoundError: [Errno 2] No such file or directory: ‘111.jpg’

在这里插入图片描述
需要将图片111和excel放到根目录下
在这里插入图片描述

效果

在这里插入图片描述
在这里插入图片描述

附件

图片

图片改名为111
在这里插入图片描述
在这里插入图片描述

excel_125">excel

excel改名为0427
在这里插入图片描述


http://www.niftyadmin.cn/n/5340551.html

相关文章

ubuntu中安装QT软件以及新建工程

QT的学习目的 QT的下载路径&#xff1a; QT的下载地址 学习嵌入式开发的过程中&#xff0c;使用QT软件主要是为了做嵌入式平台的上位机 你可以在windows中做开发&#xff0c;也可以在Ubuntu中做开发&#xff0c;但是最终都需要将上位机打包安装到嵌入式设备上&#xff0c;嵌入…

PDF处理控件aspose.PDF功能演示:使用 C# .NET 复制 PDF 页面

作为程序员&#xff0c;您通常必须以纯文本形式从 PDF 文件中提取内容以进行进一步处理&#xff0c;例如分析和信息提取。如果没有合适的工具&#xff0c;处理 PDF 文件并将整个 PDF 转换为 TXT 格式是一项麻烦的任务。因此&#xff0c;在本博客中&#xff0c;我们将探讨如何使…

数据分析的理念、流程、方法、工具(上)

一、数据的价值 1、数据驱动企业运营 从电商平台的「猜你喜欢」到音乐平台的「心动模式」&#xff0c;大数据已经渗透到了我们生活的每一个场景。不论是互联网行业&#xff0c;还是零售业、制造业等&#xff0c;各行各业都在依托互联网大数据&#xff08;数据采集、数据存储、…

x-cmd pkg | frp - 内网穿透工具

简介 frp&#xff08;Fast Reverse Proxy&#xff09;是一个专注于内网穿透的高性能反向代理应用&#xff0c;可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 它采用 C/S 模式&#xff0c;将服务端部署在具有公网 IP 的机器上&#xff0c;客户端部…

每天五分钟计算机视觉:掌握迁移学习使用技巧

本文重点 随着深度学习的发展,迁移学习已成为一种流行的机器学习方法,它能够将预训练模型应用于各种任务,从而实现快速模型训练和优化。然而,要想充分利用迁移学习的优势,我们需要掌握一些关键技巧。本文将介绍这些技巧,帮助您更好地应用迁移学习技术。 迁移学习的关键…

PSEUDO-LIDAR++:自动驾驶中 3D 目标检测的精确深度

论文地址&#xff1a;PSEUDO-LIDAR: ACCURATE DEPTH FOR 3D OBJECT DETECTION IN AUTONOMOUS DRIVING 论文代码&#xff1a;https://github.com/mileyan/Pseudo_Lidar_V2 摘要 3D 检测汽车和行人等物体在自动驾驶中发挥着不可或缺的作用。现有方法很大程度上依赖昂贵的激光雷…

【江科大】STM32:TIM输入捕获(理论部分)

文章目录 IC&#xff08;Input Capture&#xff09;输入捕获PWM频率 知识点补充1. 滤波器的工作原理&#xff1a;2. 边沿检测器&#xff1a;自动化清零CNT输入捕获的基本结构PWMI基本结构滤波器和分频器的区别误差分析pwm.cmain.cIC.c PWM模式测频率和占空比 IC&#xff08;Inp…

【PyTorch】6.Learn about the optimization loop 了解优化循环

Learn about the optimization loop 了解优化循环 Optimizing Model Parameters 优化模型参数 现在我们有了模型和数据&#xff0c;是时候通过优化数据上的参数来训练、验证和测试我们的模型了。训练模型是一个迭代过程&#xff1b;在每次迭代中&#xff0c;模型都会对输出进…