【教学类-36-03】midjounery-niji表情包图片的矩阵式切割(3*3)及GIF制作过程

news2025/1/13 17:28:50

作品展示

背景需求:

学习midjounery-niji表情包制作,先用关键词生成了一张3*3的熊猫多种表情图矩阵式样

 选第3张,放大,另存为“熊猫9张图”

 

需要:

把这张PNG图片切成9张同样大的小图,便于生成GIF动图。

图片位置:

 代码展示:


# 参考网址:https://blog.csdn.net/weixin_42182534/article/details/125773141?ops_request_misc=&request_id=&biz_id=102&utm_term=python%E6%88%AA%E5%8F%96%E5%9B%BE%E7%89%87%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-125773141.nonecase&spm=1018.2226.3001.4187

'''
功能:把midjounery 生成的3*3表情图(熊猫)等分切割成小图ng)
作者:阿夏
时间:2023年6月26日 19:51
'''

from PIL import Image
import os
import os.path
long=int(input('图片长度像素(2048,2912,1024)\n'))
wide=int(input('图片宽度像素(2048,1632,1024)\n'))

qf=int(input('切分矩阵数量3(2*2,3*3,4*4)\n'))
# 目前图片都是2*2,3*3排列

# 1:1图比例是2048
# 16:9图片比例 2912:1632
wj=input('文件夹名称\n')
 
# 定义文件所在文件夹
image_dir = r'C:\Users\jg2yXRZ\OneDrive\桌面\{}'.format(wj)
for parent, dir_name, file_names in os.walk(image_dir):  # 遍历每一张图片
    for filename in file_names:
        print(filename)
        pic_name = os.path.join(parent, filename)
        image = Image.open(pic_name)
        _width, _height = image.size
        print(_width, _height)
 
        
        # 四张图片的坐标
        t1=[0,0,float(long/qf),float(wide/qf)]
        t2=[float(long/qf),0,float(long/qf*2),float(wide/qf)]
        t3=[float(long/qf*2),0,long,float(wide/qf)]
        # t4=[0,0,float(long/qf),float(wide/qf)]
        t4=[0,float(wide/qf),float(long/qf),float(wide/qf*2)]
        t5=[float(long/qf),float(wide/qf),float(long/qf*2),float(wide/qf*2)]
        t6=[float(long/qf*2),float(wide/qf),long,float(wide/qf*2)]
        t7=[0,float(wide/qf*2),float(long/qf),wide]
        t8=[float(long/qf),float(wide/qf*2),float(long/qf*2),wide]
        t9=[float(long/qf*2),float(wide/qf*2),long,wide]
        # t3=[0,float(wide/qf),float(long/qf),wide]
        # t4=[float(long/qf),float(wide/qf),long,wide]

        pic=t1+t2+t3+t4+t5+t6+t7+t8+t9
        print(pic)
        print(len(pic))
        # [0, 0, 1456.0, 816.0, 1456.0, 0, 2912, 816.0, 0, 816.0, 1456.0, 1632, 1456.0, 816.0, 2912, 1632]

        qfall=4
        # 每张图有4个坐标
        n=0  
        for p in range(int(len(pic)/4)):
            pp=pic[p*4:p*4+4]
            print(pp)

                    
            # 定义裁剪范围(left, upper, right, lower)1024
            # # box = image.crop((0,0,123,123))
            box = image.crop((pp[0],pp[1],pp[2],pp[3]))
            name = filename[:-4]+'_'+str(n) +'.png'
            
            print(name)
            # # # ,pp[3],pp[4],pp[5],pp[6],pp[7],pp[8],pp[9]))
            # # name = filename[:-4]+'_'+str(p) +'.png'
            
            box.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\{}\{}'.format(wj,name))
            n+=1
            
    print('Done!')    
 

终端运行:

1、先查看图片的长宽尺寸(1024*1024)

 2、输入信息

 

 

 生成GIF的思路

1、桌面新建一个“PPTX” 

2、使用PPTX相册导入照片

 

 

 

 

 2、设计-幻灯片大小-自定义幻灯片大小

 

 

 

 

3、删除第一页

 4、添加统一文字

 

选中这个文本框的边缘,右击剪切

 此时熊猫下面没有文字了

 进入幻灯片模板

 

 

 5、切换-换片方式(几秒换一张图片)

 

 6、图片修图

 

 

 

 

 

 

7、 保存为MP4(重要步骤)

 

 

 作品生成(位置在桌面)

8、MP4转GIF(微信用)

打开“格式工厂”

视频-GIF

 

 

 

 

 

 

 最终效果展示:(GIF)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/693646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT ObjectThread moveToThread多线程操作

QT多线程专栏共有15篇文章,从初识线程到、QMutex锁、QSemaphore信号量、Emit、Sgnals、Slot主线程子线程互相传值同步变量、QWaitCondition、事件循环、QObjects、线程安全、线程同步、线程异步、QThreadPool线程池、ObjectThread多线程操作、 moveToThread等线程操…

我的项目--初始设计

PYQT 界面1. 表:USER ADD键:USER表添加一条记录 界面2:

【数据结构与算法】5、循环链表、约瑟夫问题、静态链表

循环链表目录 一、单向循环链表(1) add()(2) remove()(3) 单向循环链表特点 二、双向循环链表三、约瑟夫问题(Josephus Problem)四、静态链表 一、单向循环链表 🌿 单向循环链表在单链表的基础上,尾节点的 next 指向头节点 (1) a…

欺诈无所遁形:反欺诈(羊毛盾)API 应用解析

随着互联网的快速发展,欺诈行为不断演变和扩大,涉及的领域也越来越广泛。虚假账户注册、刷单、恶意评论、虚假广告等欺诈手段成为一些不法分子获取利益的途径。这些行为不仅损害了用户的利益,也对在线平台的声誉和可信度造成了威胁。为了解决…

为什么推荐用易模来制作真人手办所需的人像模型?

要问最近什么手办最流行,真人手办必须拥有姓名。大家看腻了传统的动漫以及游戏的周边手办以后,想要玩出点新花样,于是纷纷把眼光放到真人的身上,真人手办开始应运而生。 现阶段制作真人手办通常都是线下来进行,需要消费…

Docker安装pritunl

Background Pritunl是一款图形化的OpenVPN软件,提供一个友好的图形WebUI界面,对传统OpenVPN服务端与客户端复杂的安装配置流程进行了极大的简化,并且通过图形界面可以进行人员管理、参数配置,给予用户非常大的便捷性,适…

【运维】Windows 通过注册表禁用服务

【运维】Windows 通过注册表禁用服务 以这个服务为例子 Windows Push Notifications User Service 双击查看服务名称 WpnUserService_671f3 打开注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\{服务名称} HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Ser…

网络基础一:网络协议初识与网络传输基本流程

目录 网络协议认识“协议”网络协议初识协议分层OSI七层模型(理论模型)TCP/IP五层(或四层)模型(工程实现模型) 网络中的地址管理MAC地址IP地址 网络传输基本流程路由的本质 数据包封装和分用网络协议需要解决的问题 网络协议 计算…

#10041. 「一本通 2.1 练习 7」门票

题目 题目描述 RPK 要带 MSH 去一个更加神秘的地方! RPK 带着 MSH 穿过广场,在第 1618 块砖上按下了一个按钮,在一面墙上随即出现了一个把手。RPK 握住把手,打开了一扇石质大门。他们穿过悠长而芬芳的小道,走到了一扇…

基于Vue3+Vite+TS+ESLint+Prettier+Husky+lint-staged+commitlint+stylelint的项目构建

博客后台管理系统使用后的是基于Vue3ViteTSESLintPrettier的开发,具体项目构建如下 1、基于Vite创建vue-ts模板的项目骨架 pnpm create vite 项目名称 --template vue-ts2、安装ESLint、Prettier相关的 ESLint: 控制代码质量 Prettier: 控制代码风格 2.1、安装ESLi…

ASEMI代理NXP高压三端双向可控硅BT139-800E综合指南

编辑-Z BT139-800E是一种高压三端双向可控硅开关,近年来由于其卓越的性能和多功能性而广受欢迎。这种强大的半导体器件广泛应用于各种应用,包括电机控制、照明控制和温度调节。 BT139-800E的特点 1.高压能力:BT139-800E设计用于处理高压&am…

Vue Router query 命名路由 params props

6.5.路由的 query 参数 传递参数<!-- 跳转并携带query参数&#xff0c;to的字符串写法 --> <router-link :to"/home/message/detail?id${m.id}&title${m.title}">跳转</router-link><!-- 跳转并携带query参数&#xff0c;to的对象写法&am…

1753_使用Perl修改文件时间戳

全部学习汇总&#xff1a; GreyZhang/perl_basic: some perl basic learning notes. (github.com) 对于使用软件对文件进行造假的手段我一直感兴趣&#xff0c;我很想知道那些人是通过什么手段修改的文件属性。一直以来&#xff0c;我觉得修改文件的时间戳是一个很难的工作&…

Altium Designer23 设计备忘

1、新建工程 2、新建原理图 3、新建PCB 4、添加元器件SCHLIB&#xff0c;PCBLIB库 5、绘制原理图 6、给元器件添加封装 7、原理图更新至PCB 8、绘制PCB

[State of GPT] OpenAI讲座随笔记

原版&#xff1a;State of GPT B站翻译版&#xff1a;【精校版】Andrej Karpathy微软Build大会精彩演讲&#xff1a; GPT状态和原理 - 解密OpenAI模型训练 1 GPT Training Pipeline图解 记录一下对这个图的理解&#xff1a; 大模型训练的四个阶段&#xff1a; Pretraining 阶…

开发者活动:云原生的开源 AI 大模型基础设施

随着 ChatGPT 的火热&#xff0c;大语言模型和相关应用不断涌现。你是否了解大语言模型的技术细节&#xff1f;你是否曾经开发过大语言模型应用&#xff1f;如果你对大语言模型背后的基础设施感兴趣&#xff0c;那么7月8号&#xff0c;北京海淀中关村创业大街&#xff0c;云原生…

chatgpt赋能python:Python调用关系图:了解你的代码依赖关系

Python调用关系图&#xff1a;了解你的代码依赖关系 Python是一种强大的编程语言&#xff0c;具有易读易写、开放源代码、多功能等优点。但是在开发大型项目时&#xff0c;代码会变得复杂&#xff0c;不同模块之间的依赖关系也会变得混乱。为了更好地了解你的代码依赖关系&…

Openresty原理概念篇(九)LuaJIT分支和标准Lua有什么不同

一 LuaJIT分支和标准Lua有什么不同 ① 背景 luajit官方 标准lua官方 openresty自身维护的luajit 编译luajit ② LuaJIT 在 OpenResty 整体架构中的位置 ③ 标准 Lua 和 LuaJIT 的关系 ④ 为什么选择LuaJIT ⑤ lua特别之处 1&#xff09;Lua 的下标从1开始 2) 使用…

Java HelloWorld

一、java命令 javac&#xff1a;将.java文件编译成.class文件 cp - 指定class搜索路径 d - 指定class文件生成目录 java: 执行.class或.jar文件 cp指定class搜索路径 示例&#xff1a;java test1.app #表示执行./test1/app.class文件main函数 jar:打包生成.jar文件 v- 可视化输…

星星之火,可以燎原——关于太赫兹的技术进展

盼望着&#xff0c;盼望着&#xff0c;5G来了&#xff0c;6G的脚步也近了。除了做好现有的技术工作&#xff0c;作为通信人还要不断关注新技术的发展&#xff0c;真心不易&#xff01;无线数据链路的容量在过去十几年中呈指数级增长&#xff0c;但对更高数据速率的需求持续增加…