怎么给git动图扣除背景?

devtools/2024/12/22 20:57:55/

环境:

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/devtools/144474.html

相关文章

JaxaFx学习(三)

目录&#xff1a; &#xff08;1&#xff09;JavaFx MVVM架构实现 &#xff08;2&#xff09;javaFX知识点 &#xff08;3&#xff09;JavaFx的MVC架构 &#xff08;4&#xff09;JavaFx事件处理机制 &#xff08;5&#xff09;多窗体编程 &#xff08;6&#xff09;数据…

本地计算机上的MySQL服务启动后停止(connection refused: connect)解决一系列数据库连接不上的问题

推荐其他可能可以解决的博客&#xff1a; 【完美解决】mysql启动不了:本地计算机上的MySQL服务启动后停止-CSDN博客 1. 查看自己的mysql服务是否启动了&#xff0c;如果启动后又关闭了就使用下面这种方法 我是使用重新安装 MySQL 服务解决的 如果服务依然启动失败&#xf…

【计算机网络】期末考试预习复习|中

作业讲解 转发器、网桥、路由器和网关(4-6) 作为中间设备&#xff0c;转发器、网桥、路由器和网关有何区别&#xff1f; (1) 物理层使用的中间设备叫做转发器(repeater)。 (2) 数据链路层使用的中间设备叫做网桥或桥接器(bridge)。 (3) 网络层使用的中间设备叫做路…

构建lib项目-vite,rollup

目标&#xff1a;通过vite构建一个项目工程&#xff0c;能够构建出一个index.js的库。同时&#xff0c;能够将第三方的依赖打进包里。 基本步骤&#xff1a; 1. npm init -y 创建一个工程 2. 安装vite依赖 3. 创建vite.config.js配置文件 4. package.json的main字段配置 …

lvs介绍与应用

LVS介绍 LVS&#xff08;Linux Virtual Server&#xff09;是一种基于Linux操作系统的虚拟服务器技术&#xff0c;主要用于实现负载均衡和高可用性。它通过将客户端请求分发到多台后端服务器上&#xff0c;从而提高整体服务的处理能力和可靠性。lvs是基于集群的方式实现 集群…

Linux网络基础--传输层Tcp协议(上) (详细版)

目录 Tcp协议报头&#xff1a; 4位首部长度&#xff1a; 源端口号和目的端口号 32位序号和确认序号 标记位 超时重传机制&#xff1a; 两个问题 连接管理机制 三次握手&#xff0c;四次挥手 建立连接&#xff0c;为什么要有三次握手&#xff1f; 先科普一个概念&…

ubuntu22.04编译安装Opencv4.8.0+Opencv-contrib4.8.0教程

本章教程,主要记录在Ubuntu22.04版本系统上编译安装安装Opencv4.8.0+Opencv-contrib4.8.0的具体过程。 一、下载opencv和opencv-contrib包 wget https://github.com/opencv/opencv/archive/refs/tags/4.8.0.zip wget https://github.com/opencv/opencv_contrib/archive/refs/…

雅思真题短语梳理(四)

61方面 which aspects of the story 62变化 alter least 63更重要 more central / more important 64人物 the characters in it 65伪装 in disguise 66琐碎的 trivial details 67代代相传 reproduced from generation to generation 68嗜血、阴森的一面 blood-thirsty and gru…