Wallpaper壁纸提取为图片

简要说明:

wallpaper的壁纸下载后要想提取为图片,可以利用repkg工具,但是由此提取出的文件包含有我们不希望看到的,我们的目标为图片,于是本文的工作就是在repkg工具产生的output文件的基础上进行图片的提取,完善功能.在此附上repkg工具链接:Releases · notscuffed/repkg · GitHub

具体代码:

最基本的python代码,实现文件的操作,注意将repkg.exe文件与以下代码放在同一个文件夹里.

最后会生成俩个文件夹filtered-images和ideal-images,里面包含所有的图片,来进行最后人为的划分.

import os
import shutil


class Repkg:
    def __init__(self):
        """
        配置变量
        """
        self.imageSuffix = ["bmp", "jpg", "png", "tif", "gif", "pcx", "tga", "exif",
                            "fpx", "svg", "psd", "cdr", "pcd", "dxf", "ufo", "eps",
                            "ai", "raw", "WMF", "webp", "avif", "apng", ]  # 所有图片格式
        self.output_filter_img = "filtered-images"  # 输出文件夹-过滤图片
        self.output_ideal_img = "ideal-images"  # 输出文件夹-筛选图片
        self.output = "output"
        self.steamDirs = r"E:\Games\Steam\steamapps\workshop\content\431960"  # steam保存壁纸的文件夹
        self.filter_size_criteria = 500  # 筛选图片大小标准 500KB

    def run_repkg(self):
        """
        运行repkg命令,将wallpaper中的图片提取出来,保存到output文件夹
        """
        try:
            if not os.path.exists(self.output):
                os.system(r"repkg extract -e tex -s -o ./{} {}".format(self.output, self.steamDirs))
        except Exception:
            print("请检查路径是否正确")

    def follow_work(self):
        """
        将repkg提取出来的各种文件进行筛选,整合到自定义的文件夹中
        """
        if not os.path.exists(self.output_ideal_img):
            os.makedirs(self.output_ideal_img)
        if not os.path.exists(self.output_filter_img):
            os.makedirs(self.output_filter_img)
        self.clearDir(self.output_ideal_img, self.output_filter_img)

        for fileName in os.listdir(self.output):
            if fileName.split(".")[-1] in self.imageSuffix:
                file = os.path.join(self.output, fileName)
                size = os.path.getsize(file) / 1024
                print("{} -> size:{:.3f}KB ".format(fileName, size))
                if size > self.filter_size_criteria:
                    shutil.copy(file, self.output_ideal_img)
                else:
                    shutil.copy(file, self.output_filter_img)

    def clearDir(self, *dirs):
        """
        清理文件,将一个文件夹清空
        :param dirs: 需要清空的文件夹序列
        """
        chdir = os.getcwd()
        for dir in dirs:
            os.chdir(os.path.join(chdir, dir))
            for file in os.listdir("./"):
                if os.path.isdir(file):
                    self.clearDir(file)
                    os.removedirs(file)
                else:
                    os.remove(file)
        os.chdir(chdir)

    def process_item(self):
        self.run_repkg()
        print("\n{:*^150}\n".format("已完成pkg文件提取"))

        self.follow_work()
        print("\n{:*^150}\n".format("已完成图片提取, 开始清理不必包文件"))

        self.clearDir(self.output)
        os.removedirs(self.output)

        print("代码工作完成,请查看:\n{}\n{}\n文件夹,进行微操".format(
            os.path.join(os.getcwd(), self.output_ideal_img),
            os.path.join(os.getcwd(), self.output_filter_img)))


if __name__ == '__main__':
    Repkg().process_item()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值