【办公类-19-01】“微信表情”表情包上传,用Python调整各类尺寸、格式

news2024/11/16 6:01:36

背景需求:

今天学了“微信表情”的表情图上传流程,发现其中有多种尺寸参数,必须完全符合尺寸、格式,才能上传。

 

 

 以上有PNG、GIF的不同,有50*50,120*120,240*240,750*400四款差异,手动修改太费时了

我想用Python一次性制作出所有尺寸参数图。便于上传

制作过程:

1、先用MJ获得头像

 

2、用代码切割图片3*3,

3、把小图放到PPT里添加文字

 4、另存为图片,放到D盘下(路径是英文的)

 图片名称为01 02 03.png(微信表情默认上传数字,汉字不行)

5、大部分图片都是正方形尺寸,只有一个详情页是长方形

1、先把正方形图片做成400*400,

2、然后新建一个400*350的白色图片

3、把两个图片水平拼在一起

4、为了拼图成功,必须要求路径中全部是数字英文,不能有汉字。所以这次的文件放到D盘了

代码展示:


#导入Image库
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import skimage.io as io
import numpy as np
import cv2
import os
import shutil


cs=input('D盘的文件名emoij\n')

print('----------第1步:提取所有的幼儿照片的路径------------')
import os
path=[]
p=r"D:\\{}\01原图PNG".format(cs)
# 过滤:只保留png结尾的图片 31张(多几张备用)
imgs=os.listdir(p)
for img in imgs:
    if img.endswith(".png"):
        path.append(p+'\\'+img)
# 所有图片的路径
print(path)
print(imgs)
# # 都是01,02 03。png

print('----------第2步:新建02-08文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
l=['02','03动态静态大图gif240','04动态静态小图png120','05主图1张png240','06聊天页面小图png50','02详情页PNG750乘400']
for ll in l:
    os.mkdir(r"D:\{}\{}".format(cs,ll))
 
# time.sleep(3)
for n in range(len(path)):
#打开当前目录下 !.png 图片文件对象

    old_pic = Image.open('{}'.format(path[n]))

    # 图片拼接    
    '02详情页PNG750乘400'
    
    # 1,先把正方形表情包压缩到400*400
    new_pic400 = old_pic.resize((400, 400), Image.ANTIALIAS)
    new_pic400.save(r"D:\{}\{}\{}".format(cs,l[0],imgs[n]))

    # 2。新建350*400的白色图片
    img=Image.new("RGB",(350,400),(255,255,255))           
    # 保存图片
    img.save(r"D:\{}\color.png".format(cs))

    # 3、拼接图片 

    # 读入两张图片
    img1 = cv2.imread(r"D:\{}\{}\{}".format(cs,l[0],imgs[n]))
    img2 = cv2.imread(r"D:\{}\color.png".format(cs))
    # 获取图片的宽度和高度
    width, height = img1.shape[:2]

    # 将两张图片水平拼接
    result = np.hstack((img1, img2))

    # 保存拼接后的图片
    cv2.imwrite(r"D:\{}\{}\{}".format(cs,l[0],imgs[n]), result)

    # 把02的文件转移到02详情页
    

    src=r"D:\{}\{}".format(cs,l[0])#原文件夹路径
    des=r"D:\{}\{}".format(cs,l[5])#新文件夹路径

    for file in os.listdir(src):
        #遍历原文件夹中的文件
        full_file_name = os.path.join(src, file)#把文件的完整路径得到
        print("要被复制的全文件路径全名:",full_file_name)
        if os.path.isfile(full_file_name):#用于判断某一对象(需提供绝对路径)是否为文件
            shutil.copy(full_file_name, des)#shutil.copy函数放入原文件的路径文件全名  然后放入目标文件夹

   



    # '03动态静态大图gif240' #修改图片size为240*240,生成新图片对象
    new_pic240da = old_pic.resize((240, 240), Image.ANTIALIAS)
    new_pic240da.save(r"D:\\{}\{}\{}.gif".format(cs,l[1],imgs[n][0:2]))

    '04动态静态小图png120'
    new_pic120 = old_pic.resize((120, 120), Image.ANTIALIAS)
    new_pic120.save(r"D:\\{}\{}\{}".format(cs,l[2],imgs[n]))

    # 05主图1张png240',
    new_pic240 = old_pic.resize((240, 240), Image.ANTIALIAS)
    new_pic240.save(r"D:\\{}\{}\{}".format(cs,l[3],imgs[n]))

    '06聊天页面小图png50'
    new_pic150 = old_pic.resize((50, 50), Image.ANTIALIAS)
    new_pic150.save(r"D:\\{}\{}\{}".format(cs,l[4],imgs[n]))

 # 删除02文件夹
shutil.rmtree('{}'.format(src)) #递归删除文件夹,即:删除非空文件夹
# shutil.rmtree(r'D:\{}\color.png'.format(cs)) #递归删除文件夹,即:删除非空文件夹
os.remove(r'D:\{}\color.png'.format(cs))
    
   

终端运行

 结果显示

 

 

 

 

 

 

 一次性就把所有上传的尺寸、格式都定义好了,是不是很方便?

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

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

相关文章

我第一次面试自动化测试就被diss了,人生惨遭滑铁卢…

如果你恰好刚刚进入一家新公司,领导一上来就让你开展自动化测试,作为一名初出茅庐的测试新人,除了手足无措,你只能默默慨叹自己能力尚欠,眼前只会出现一个又一个无从下手的问题: 作为手工测试,…

MySQL的视图和索引(调优)

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于MySQL数据库的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.视图是什么? 二.视图…

【周末闲谈】关于计算机的二三事

个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 文章目录 前言一、第一台计算机的诞生💻二、计算机发展历史📚第一代计算机💻第二代计算机💻第三代计算机💻第四代计算机&#x…

国产MCU-CW32F030开发学习-圆形GC9A01_LCD模块

国产MCU-CW32F030开发学习-圆形GC9A01_LCD模块 硬件平台 CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件1.28寸圆形彩色TFT显示屏高清IPS 模块240X240 SPI接口GC9A01 产品介绍 1.28寸圆形IPS彩屏,支持 RGB 65K色显示,显示色彩丰富240X240分辨率…

一篇文章让你搞懂指针和数组笔试题(加深对指针的理解)

指针和数组笔试题解析 下文哦我们直接结合代码进行讲述 一维数组 1 //一维数组 #include<stdio.h> int main() {//一维数组int a[] { 1,2,3,4 };printf("%d\n", sizeof(a));printf("%d\n", sizeof(a 0));printf("%d\n", sizeof(*a))…

【C的葵花宝典进阶篇】之指针进阶(一)

【C语言进阶篇】之指针进阶&#xff08;一&#xff09; 1. 字符指针2. 指针数组2.1 整形指针数组2.2 用指针数组模拟二维数组 3. 数组指针3.1 数组指针的表示方法3.2 深度剖析&数组名和数组名3.3 数组指针的使用3.3.1 在同一函数内直接将数组的地址赋给数组指针3.3.2 数组指…

Flink提交作业时报错Cannot support file system for ‘hdfs‘ via Hadoop

Flink整合HDFS提交作业时报错 分享一个Flink提交作业时的报错&#xff0c;由于我用的是1.12版本的Flink&#xff0c;对于Hadoop3.0新特性是没有支持的&#xff0c;我的Hadoop版本是3.3.1。然后flink-shaded-hadoop-3-uber jar包是没有的&#xff0c;需要手动添加。 报错 Caus…

6、选中tiles的模型并高亮

本节演示选中3dtiles的模型&#xff0c;选中模型与ceisum基本一致。通过鼠标左键单击模型并将选中的模型进行高亮。使用上一节的示例&#xff0c;再添加鼠标左键单击事件用于选中模型。 1、修改Handler类&#xff0c;添加静态函数onLeftClick&#xff0c;参数与右键单击函数一…

ubuntu无法定位软件包 tfpd-hpa

安装sudo apt-get install tftp-hpa tftpd-hpa 提示无法定位软件包tfpd-hpa 搜索一下解决方法是需要sudo apt-get update之后才可 结果sudo apt-get update提示索引文件下载失败 按照网上的解决办法更改/etc/apt/sources.list里面的下载源问题依旧&#xff0c;然后又把source…

怎么把word转换成只有一页的长页PDF?

来百度APP畅享高清图片 要将Word文档打印成一长页的PDF格式&#xff0c;我们得先知道word转PDF的工作原理。word转pdf其实就是将word打印出来&#xff0c;就是跟你用物理打印机打印的原理是差不多的&#xff0c;所不同的是&#xff0c;PDF虚拟打印的原理是利用虚拟打印机驱动程…

新手入门深度学习 | 6-2:AlexNet(2012)详解

&#x1f517; 运行环境&#xff1a;python3&#x1f6a9; 作者&#xff1a;K同学啊&#x1f947; 精选专栏&#xff1a;《深度学习100例》&#x1f525; 推荐专栏&#xff1a;《新手入门深度学习》&#x1f4da; 选自专栏&#xff1a;《Matplotlib教程》&#x1f9ff; 优秀专栏…

oracle新建库(表空间)表

文章目录 前言一、sqlplus登录二、表空间1.新建表空间2. 查看表空间3. 查看表空间和对应数据文件4.表空间增加数据文件5.删除单个数据文件&#xff08;只有一个默认的会删除失败&#xff09;6.删除表空间及数据文件(慎用) 三、创建新用户并指定表空间1.去掉前缀2.新建用户&…

C语言是一种通用的、面向过程的编程语言

具有以下特点&#xff1a; 简洁而高效&#xff1a;C语言的语法相对简单&#xff0c;同时提供了丰富的编程结构和功能&#xff0c;使得开发者能够用较少的代码实现复杂的任务。C语言的执行效率高&#xff0c;能够直接操作计算机硬件&#xff0c;提供了底层的控制和优化能力。 可…

时间序列预测 | Matlab基于极限梯度提升树XGBoost时间序列预测,XGBoost时间序列预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 时间序列预测 | Matlab基于极限梯度提升树XGBoost时间序列预测,XGBoost时间序列预测模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码

后端开发常见技术场景

文章目录 1、单点登录这块怎么实现的1.1 概述1.2 JWT解决单点登录1.3 回答要点 2、权限认证是如何实现的2.1 概述2.2 RBAC权限模型2.3 回答要点 3、上传数据的安全性你们怎么控制&#xff1f;3.1 概述3.2 对称加密3.3 非对称加密3.4 回答要点 4、你负责项目的时候遇到了哪些比较…

【Ubuntu学习MySQL——导出数据报错ERROR1290】

将数据表 runoob_tbl 数据导出到 /tmp/runoob.txt 文件中出错&#xff1a; 这是因为mysql有个安全变量限制。可以通过以下语句查看设置的路径&#xff0c;然后将要导入到的文件名称改到此路径下即可。

现场工程师宝典-流式处理的异常现象以及提高吞吐能力的常见优化策略

流式处理区别于按包处理&#xff0c;指的是对处理者而言&#xff0c;面对的是逻辑上无头无尾的数据流。因此&#xff0c;在提取数据流中的包时&#xff0c;就需要遵循其内在的格式&#xff0c;进行头部捕获、提取、校验。然而&#xff0c;如果不考虑TCP等流式数据的异常情况&am…

视频怎么做成二维码?一招轻松制作二维码

怎么把视频做成二维码&#xff1f;现在用二维码来做载体存储视频&#xff0c;这种方法能够有效的减少内存占用&#xff0c;可以将视频储存在云端&#xff0c;他人只需要扫码就能够查看视频。下面来教大家一招关于视频二维码制作&#xff08;音视频二维码制作-一键免费生成音视频…

Kafka传输数据到Spark Streaming通过编写程序java、scala程序实现操作

一、案例说明 现有一电商网站数据文件&#xff0c;名为buyer_favorite1&#xff0c;记录了用户对商品的收藏数据&#xff0c;数据以“\t”键分割&#xff0c;数据内容及数据格式如下&#xff1a; 二、前置准备工作 项目环境说明 Linux Ubuntu 16.04jdk-7u75-linux-x64scal…

(LFPAK56)BUK7Y7R0-40HX 40V、N 通道BUK9Y6R5-40HX表面贴装汽车用MOSFET器件

汽车用MOSFET将低压超级结技术与先进的封装设计相结合&#xff0c;以实现高性能和耐用性。Trench 9 MOSFET系列产品全部符合AEC-Q101标准&#xff0c;且超越了这一国际汽车级标准的要求&#xff0c;在包括温度循环 (TC)、耐高温栅极偏置 (HTGB)、耐高温反向偏置 (HTRB) 和断续工…