吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1592|回复: 32
收起左侧

[Python 原创] 将爬取的漫画图片合并

  [复制链接]
wangzherongyao2 发表于 2024-3-11 20:09
[Asm] 纯文本查看 复制代码
# 合并图片
import os,sys
from PIL import Image as imim
from tkinter import *
import tkinter.filedialog 
import tkinter as tk
from tkinter import filedialog

def merge_images(image_folder, jpg,mer_num):
    # 获取所有图像文件的列表
    sorted_files = [os.path.join(image_folder, f) for f in os.listdir(image_folder) if f.endswith('.'+jpg)]
    image_count = len(sorted_files)
    if image_count == 0:
        print('No image files found in the directory:', image_folder)
        return
    # 根据文件名进行排序
    # sorted_files = sorted(image_files)
    # 注意(x.split('_')[1])[:-4]) 为切割字符串为数字
    sorted_files.sort(key = lambda x:int(x.split('\\')[-1][:-4]))
    # 计算新图片的宽度和高度
    new_width = new_height = mer_height = 0
    new_img=None
    for i,image in enumerate(sorted_files):
        image = imim.open(image)
        print(sorted_files[i])
        if(i%mer_num==0 or i==image_count-1):
            new_width = new_height = mer_height = 0

            if(new_img!=None):
                path = image_folder+'/合成/'
                if not os.path.exists(path):
                    os.mkdir(path)
                if(i==image_count-1):
                    new_img.save(path+str(i//mer_num+1)+'.jpg')  
                    print('保存图片:'+str(i//mer_num+1)+'.jpg')     
                else:
                    new_img.save(path+str(i//mer_num)+'.jpg')
                    print('保存图片:'+str(i//mer_num)+'.jpg')
            for num in range(min(mer_num,image_count,image_count-i)):
            # 加载图片
                img1 = imim.open(sorted_files[i//mer_num*mer_num+num])
                new_height = new_height+img1.height
                new_width = max(img1.width, new_width)
            new_img = imim.new('RGB', (new_width, new_height))
            # 拼接两张图片
            new_img.paste(image, (0,mer_height))
            mer_height=mer_height+image.height
        else:
             # 拼接两张图片
            new_img.paste(image, (0,mer_height))
            mer_height=mer_height+image.height

def askfile(initialdir=r"C:\Users\Administrator\Desktop"):
    return tkinter.filedialog.askdirectory(
    title="选择一个文件夹..", 
    initialdir=initialdir,
    parent=root
    )  

mainargv=sys.argv
root = tk.Tk()
root.withdraw()  # 隐藏主窗口
root.attributes('-topmost', 1)# 让文件选择器窗口始终在顶层
  
if len(mainargv) > 1:               # 这里是 希望用户把图片文件拖拽到程序图标上 
    image_folder=mainargv[1]
else:                               # 没有拖拽 就打开文件选择器
    image_folder=askfile(os.getcwd())


# 用法示例
jpg = 'jpg' #图片格式
mer_num = 40 #图片合并数量

merge_images(image_folder,jpg,mer_num)






是否在纠结刚爬好的漫画图片是一张一张的,上面的代码可以将文件夹下的漫画图片合成一张,有在APP上观看的效果




合并后

合并后

未合并

未合并

免费评分

参与人数 5吾爱币 +10 热心值 +5 收起 理由
MIKCN + 1 + 1 我很赞同!
LJCWJ + 1 + 1 谢谢@Thanks!
JJJJJJyj + 1 + 1 我很赞同!
www52pjzk + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| wangzherongyao2 发表于 2024-3-12 10:17
已打包成exe文件,需要的朋友可以下载   链接: https://pan.baidu.com/s/1Ol8zzU0l_gKrA1F2pJZLFQ?pwd=a3hj  提取码: a3hj
zhu2023 发表于 2024-3-11 21:47
super_george 发表于 2024-3-12 10:37
合并后的图其实不是很容易看的,打开要缩放到合适比例,其实看漫画还是用网页,如果整个图你做成水平方向100%,纵向自适应会方便阅读,但这样还不如不合并,直接用img标签叠起来。开心就好,分享很好。
lopk666 发表于 2024-3-11 22:22
好专业的说,学习了~
jr001 发表于 2024-3-11 22:58
感谢分享!!!
hao6988456 发表于 2024-3-12 00:25
感谢分享,学到了
HCqinghudan 发表于 2024-3-12 05:43
感谢楼主分享
ltgb 发表于 2024-3-12 07:56
有没有打包好的程序
jessylake 发表于 2024-3-12 08:10
想看爬漫画图片的过程
Qazplm147 发表于 2024-3-12 08:12
还可以这样!!学到了学到了
yipenwazi 发表于 2024-3-12 08:19
优秀优秀优秀优秀
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 20:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表