【教学类-36-04】Midjounery 各种图片切割(通用公式)

news2024/9/24 11:25:44

作品展示:

6*6切割=36图

5*4图:20张

问题产生:

之前的代码是:一张图的四个坐标,有4张就要写4行。

 后续发现,Midjounery生成的图片矩阵X Y数量不等,不仅有3*3,还有4*3、5*4的结构,

这样写的图片坐标列表,实在太多了,每一张图就要写一个PY文件

产生需求

用一个通用代码py,把Midjounery生成的表情图(数量不等)切割成3*3、5*4、4*3的小图

 

测算过程:

 

 终于发现其中的规律

1、梳理坐标节点(所有节点数字做成列表)

 2、寻找坐标数字 变化的规律

 

  

代码:


# 参考网址: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方形矩阵,5*4矩阵、3*5矩阵切割 通用公式)
作者:阿夏
时间:2023年6月26日 19:51
'''

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

small_long=int(input('长边切分4(4*3)\n'))
small_wide=int(input('宽边切分3(4*3)\n'))
# 目前图片都是2*2,3*3排列

# 1:1图比例是2048
# 16:9图片比例 2912:1632
wj=input('文件夹名称\n')

z=0
longall=[]
longall.append(z)
for l in range(1,small_long+1):
    ll=float(long/small_long*l)
    longall.append(ll)
print(longall)
# 右侧边的所有参数 长/X
# [0, 512, 1024, 1536, 2048]


wideall=[]
wideall.append(z)
for w in range(1,small_wide+1):
    ww=float(long/small_wide*w)    
    wideall.append(ww)
print(wideall)
# 下边的所有参数 宽/X
# [0, 682.6666666666666, 1365.3333333333333, 2048.0]


pic=[]
for x in range(0,small_wide):
    for y in range(0,small_long):
        z1=longall[y]
        z2=wideall[x]
        z3=longall[y+1]
        z4=wideall[x+1]
        pic.append(z1)
        pic.append(z2)
        pic.append(z3)
        pic.append(z4)
print(len(pic))


    # # 4*3图为例hang 
    # 第1行四张 
    # z1=longall[0]  [1]   [2] [3]
    # z2=wideall[0]
    # z3=longall[1]  [2]   [3] [4]
    # z4=wideall[1]

    # 第2行四张 
    # z1=longall[0]  [1]   [2] [3]
    # z2=wideall[1]
    # z3=longall[1]  [2]   [3] [4]
    # z4=wideall[2]
    
    # 第3行四张 
    # z1=longall[0]  [1]   [2] [3]
    # z2=wideall[2]
    # z3=longall[1]  [2]   [3] [4]
    # z4=wideall[3]

    # 总结:
    # z1=long[0:4]  每张图左侧的坐标会变 ,索引数字不断从0,1/4,2/4,3/4
    # z2=宽数量     宽的索引,不断增加
    # z3=long[0+1:4+1]  每张图右侧 索引数+1 从1/4,2/4,3/4,4/4(=长)
    # z4=宽+1      宽的索引+1






 
# 定义文件所在文件夹
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)
 

        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、以4*3小兔图片为例

 终端输入

 

 

1、以6*6男孩表情包图片为例

 

 终端输入

 

 等分切割,不能保证每张小图都在正中位置,智能大致切割

 因此表情图最好能够不粘连的,矩阵结构清晰的。

来两张PDF

 

 

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

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

相关文章

基于appnium+python+夜神模拟器的自动化

目录 1、安装夜神模拟器 2、定位元素 3、开始编码 首先搭好appnium环境!参考https://www.cnblogs.com/testlearn/p/11419797.html 1、安装夜神模拟器 下载安装夜神模拟器后,在cmd命令输入adb connect 127.0.0.1:62001,显示出设备则表示…

虚拟稀疏卷积在多模态 3D 目标检测中的应用

论文背景 虚拟点云生成时,从图像中生成的虚拟点非常密集,在检测过程中引入了大量的冗馀计算量。同时,不准确的深度补全所带来的噪声会显著降低检测精度。 早期利用图像特征扩展LiDAR点的特征的方法,如语义掩膜和二维CNN特征。他…

机器学习11:逻辑回归-Logistic Regression

目录 1.计算概率 2.损失和正则化 2.1 逻辑回归的损失函数 2.2 逻辑回归中的正则化 3.参考文献 1.计算概率 许多问题需要概率估计作为输出。逻辑回归是一种极其有效的概率计算机制。实际上,我们可以通过以下两种方式使用返回的概率: 原始概率&…

Appium安装部署

目录 一、检查Java环境 二、安装android SDK 一、检查Java环境 Android SDK依赖ava环境,因此需要先安装jdk。在CMD中输入java -version 出现下图的结果,说明当前环境已安装jdk 如果提示java命令无效,请安装后进行下一步。 二、安装androi…

360手机打开USB调试+文件传输

360手机USB调试文件传输[用户版] 参考:360手机-360刷机360刷机包twrp、root 360刷机包360手机刷机:360rom.github.io 【前言】 *360手机USB调试 ,必须提前打开“开发者模式USB调试”进行 【操作流程】 打开:开发者模式、USB调…

vue3进阶-----单文件组件

目录 三.vue3进阶 1.单文件组件 1-1组件定义-重塑经脉,断了? 1-2单文件组件(SFC)-独立日 1-3Vue-CLI创建项目-锅灶升级 1-4 vuecli选项介绍 1-5 VueCLI创建项目-风云再起 index.html main.js 作用 ES6 导入 导出 解决跨域之“Vue-Cli配置跨域…

Vue 自定义ColorPicker

Vue 自定义ColorPicker 创建自定义组件ColorPicker.vue <template><div class"box"><div class"picker-box"><div class"color" :style"{ background: color }"></div><div class"el-icon-arr…

使用元类实现ORM

使用元类实现ORM ORM 是 python编程语言后端web框架 Django的核心思想&#xff0c;“Object Relational Mapping”&#xff0c;即对象-关系映射&#xff0c;简称ORM。 我们想实现的目标是: 创建一个实例对象&#xff0c;用创建它的类名当做数据表名&#xff0c;用创建它的类属…

十分钟实现 Android Camera2 相机拍照

1. 前言 因为工作中要使用Android Camera2 API&#xff0c;但因为Camera2比较复杂&#xff0c;网上资料也比较乱&#xff0c;有一定入门门槛&#xff0c;所以花了几天时间系统研究了下&#xff0c;并在CSDN上记录了下&#xff0c;希望能帮助到更多的小伙伴。 上篇文章 我们使用…

【数据分享】1929-2022年全球站点的逐月平均压力数据(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 对于具体到监测站点的气象数据&#xff0c;之前我们分享过1929-2022年全球气象…

paddlespeech 声纹识别embedding向量提取;TTS文本合成语音

1、声纹识别embedding向量提取 参考&#xff1a; https://aistudio.baidu.com/aistudio/projectdetail/4353348 https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/demos/speaker_verification/README_cn.md https://aistudio.baidu.com/aistudio/projectdetail/4…

Apache Zeppelin 番外篇——参与开源的得与失

背景 经常在公司做一些业务开发&#xff0c;公司里面由于各种人员流动等问题&#xff0c;导致代码质量也是参差不齐&#xff0c;最终问题就是很难维护&#xff0c;前期还想着能够优化代码&#xff0c;但是大部分时间都是需求都是倒排期&#xff0c;所以也导致不再想进行代码优…

车联网 CAN Bus 协议介绍与数据实时流处理

什么是 CAN Bus&#xff1f; CAN&#xff08;Control Area Network&#xff09;Bus 是一种串行通信协议&#xff0c;能够让设备之间可靠而高效地传输数据。它广泛应用于车辆领域&#xff0c;像神经系统一样连接车辆内部的各个电子控制单元。 CAN Bus 最初由博世公司在 20 世纪…

matlab合并/拼接多个excel表

一、 说明&#xff1a;Excel中数据含有 日期&#xff0c;double如何实现多个表合并 解&#xff1a; path E:\xxx\; namelist dir([path,*.csv]); L length(namelist); a []; for i 1:Lfilename{i} [path,namelist(i).name];bb readtable(filename{i},Range,A1:G2881)…

智能指针

目录 RAII auto_ptr unique_ptr shared_ptr shared_ptr的循环引用 weak_ptr 删除器 智能指针的出现主要是针对程序的资源泄露问题而产生的。 RAII RAII&#xff08;Resource Acquisition Is Initialization)是种利用对象生命周期来控制程序资源的简单技术。 在对象构…

2024考研408-计算机组成原理第四章-指令系统学习笔记

文章目录 前言一、指令系统现代计算机的结构1.1、指令格式1.1.1、指令的定义1.1.2、指令格式1.1.3、指令—按照地址码数量分类①零地址指令②一地址指令&#xff08;1个操作数、2个操作数情况&#xff09;③二地址指令④三地址指令⑤四地址指令 1.1.4、指令-按照指令长度分类1.…

c#泛型类

派生抽象基类 public abstract class cal<T> {public abstract T add(); }public class ab : cal<string> {public override string add(){return null;} }泛型类的静态成员 public class cal<T> {public static int X9; }public class ab : cal<strin…

detr(detection transformer)模型训练自己的数据集

目录 1.detr源码下载 2. 编译配置 3. 编译报错问题 4. 训练过程打印参数解读 1.detr源码下载 GitHub - facebookresearch/detr: End-to-End Object Detection with Transformers 2. 编译配置 编译参数只需要传递数据集路径即可&#xff0c;数据集格式是coco数据集类型 数…

投稿TMC的感受

投稿任务告与段落了&#xff0c;最终的结果是被TMC给early reject了。这神一样的审稿意见让我真的是老头地铁看手机啊&#xff01;所以虽然TMC没有给我rebuttal的机会。所以我还是打算在CSDN进行一次rebuttal。 其实我做的东西很简单&#xff0c;就是把时间序列中的将时间序列转…

FreeRTOS学习笔记—基础知识

文章目录 一、什么是RTOS二、前后台系统三、实时内核&#xff08;可剥夺型内核&#xff09;四、RTOS系统五、FreeRTOS系统简介六、FreeRTOS源码下载 一、什么是RTOS RTOS全称为:Real Time OS&#xff0c;就是实时操作系统&#xff0c;核心在于实时性。实时操作系统又分为硬实时…