怎么给git动图扣除背景?

news/2024/12/22 9:36:00/

环境:

Wn10 专业版

python

问题描述:

怎么给git动图扣除背景?

在这里插入图片描述

解决方案:

要将一个 GIF 动图的尺寸改为 50x50 并且把黑色背景改成透明,您可以使用 Python 的 Pillow 库。Pillow 支持处理静态图像和动画 GIF。下面是具体的步骤和代码示例:

  1. 安装 Pillow:如果您还没有安装 Pillow,可以通过 pip 安装:
    pip install pillow
    

在这里插入图片描述

  1. 编写脚本:接下来是 Python 脚本,它会加载 GIF 文件,调整其大小到 50x50,并将所有黑色像素(或接近黑色的像素)转换为透明。
from PIL import Image, ImageSequence
import mathdef color_distance(color1, color2):"""Calculate the Euclidean distance between two colors in RGB space."""r1, g1, b1, _ = color1r2, g2, b2, _ = color2return math.sqrt((r2 - r1) ** 2 + (g2 - g1) ** 2 + (b2 - b1) ** 2)def make_transparent(image, target_color=(0, 33, 63), threshold=30):"""Make pixels close to the target color transparent based on color distance."""image = image.convert("RGBA")datas = image.getdata()newData = []for item in datas:# If a pixel is close to the target color (based on color distance), make it transparentif color_distance(item, target_color + (255,)) <= threshold:newData.append((255, 255, 255, 0))  # Transparentelse:newData.append(item)image.putdata(newData)return imagedef process_gif(input_path, output_path, size=(50, 50)):with Image.open(input_path) as im:frames = [frame.copy() for frame in ImageSequence.Iterator(im)]# Process each frameprocessed_frames = []for frame in frames:resized_frame = frame.resize(size, Image.LANCZOS)  # Resize frame with LANCZOS filtertransparent_frame = make_transparent(resized_frame)  # Make black background transparentprocessed_frames.append(transparent_frame)# Save the processed frames as a new gifprocessed_frames[0].save(output_path,save_all=True,append_images=processed_frames[1:],duration=im.info.get('duration', 50),  # Use original duration or default to 50msloop=im.info.get('loop', 0))  # Use original loop count or default to forever# Call the function with your input and output file paths
process_gif('C:\\Users\\Administrator\\Pictures\\123.gif', 'C:\\Users\\Administrator\\Pictures\\output.gif')

注意事项

  • 阈值设置make_transparent 函数中的 threshold 参数决定了什么样的颜色会被认为是“黑色”。您可能需要根据您的具体 GIF 来调整这个值。
  • 抗锯齿:在调整大小时,我们使用了 Image.ANTIALIAS 滤镜来保证更好的图像质量。不过要注意的是,在较新的 Pillow 版本中,ANTIALIAS 已经被弃用,取而代之的是 Image.Resampling.LANCZOS
  • 帧延迟duration 参数定义了每一帧之间的时间间隔,单位是毫秒。如果原始 GIF 的帧速率不同,您可能需要调整这个值。
  • 循环次数loop=0 表示 GIF 将无限循环播放。如果您想要不同的行为,可以更改这个值。

请确保替换 'path/to/your/input.gif''path/to/your/output.gif' 为实际文件路径。运行此脚本后,您应该会在指定的位置得到一个调整过大小并且黑色背景已被设为透明的新 GIF 动图。

  1. 运行脚本

最后结果不咋地
在这里插入图片描述
改颜色值位置

def make_transparent(image, target_color=(0, 33, 63), threshold=30):

在这里插入图片描述


http://www.ppmy.cn/news/1557161.html

相关文章

【考前预习】4.计算机网络—网络层

往期推荐 【考前预习】3.计算机网络—数据链路层-CSDN博客 【考前预习】2.计算机网络—物理层-CSDN博客 【考前预习】1.计算机网络概述-CSDN博客 目录 1.网络层概述 2.网络层提供的两种服务 3.分类编址的IPV4 4.无分类编址的IPV4—CIDR 5.IPV4地址应用规划 5.1使用定长子…

C++学习路程-7-C++标准库

C标准库概述 C标准库是C语言的一部分&#xff0c;提供了一系列的类、函数和模板&#xff0c;旨在简化编程过程&#xff0c;提高代码的可读性和可维护性。它的主要组成部分包括输入/输出库、容器库、算法库、字符串处理库、时间和日期库、多线程库和文件输入输出库等。 1. 输入…

使用ioredis在Node.js中操作Redis数据结构的详细指南

使用ioredis在Node.js中操作Redis数据结构的详细指南 一. 使用ioredis操作Redis数据结构的详细知识点讲解 在Node.js中&#xff0c;ioredis是一个强大且易于使用的Redis客户端库&#xff0c;它提供了对Redis数据库的直接操作。本文将通过一系列代码示例&#xff0c;详细解释如…

Flutter 多个弹窗关闭指定弹窗

前言 大家都知道Flutter的页面是堆栈式管理&#xff0c;通常关闭页面是最后进入的最先关闭&#xff0c;通过pop进行一个退栈操作。 但是我碰到一个问题&#xff0c;有时需要在同一页面上显示多个弹窗。如果此时需要关闭指定的某一个弹窗&#xff0c;那退栈操作明显不合适了&a…

网络安全防范

实践内容 学习总结 PDR&#xff0c;$$P^2$$DR安全模型。 防火墙&#xff08;Firewall&#xff09;&#xff1a; 网络访问控制机制&#xff0c;布置在网际间通信的唯一通道上。 不足&#xff1a;无法防护内部威胁&#xff0c;无法阻止非网络传播形式的病毒&#xff0c;安全策略…

GitHub企业版:AWS CodeCommit迁移的最佳路径与技术优势

此前&#xff0c;亚马逊网路服务&#xff08;AWS&#xff09;宣布&#xff0c;自2024年7月25日起&#xff0c;AWS CodeCommit不再接受新客户。虽然现有客户可以继续使用该服务&#xff0c;且其安全性、可用性和性能将得到维护&#xff0c;但AWS将不再推出新功能或接受新用户。 …

MySQL 8.0 新特性详解

MySQL 8.0 引入了许多重要的功能和改进&#xff0c;这些特性显著提升了数据库的性能、可用性和开发体验。以下是 MySQL 8.0 的主要新特性及其详细解析&#xff1a; 降序索引支持 MySQL 8.0 支持降序索引&#xff0c;而之前版本即使语法支持&#xff0c;实际仍为升序。通过降序…

RabbitMQ镜像队列机制

RabbitMQ镜像队列机制 机制原理实现原理注意事项 集群结构注意事项 镜像结构普通队列结构镜像队列结构 组播GMGM的作用实现原理实现过程 加入新节点注意事项 节点宕机的影响 配置镜像队列注意事项定义参数参数含义注意事项 命令配置命令格式参数释义 查看要进行镜像的队列设置策…