基于python的图片批量调色处理

本文介绍了一种图片处理方法,包括读取图片、转换为RGBA模式、进行反色处理并增强亮度,同时提供了批量处理图片的代码实现。

import os,stat

import urllib.request

import math

import json

from PIL import Image

from PIL import ImageEnhance

import PIL.ImageOps 

import matplotlib.pyplot as plt

import numpy as np

 

def convertImage(sourcefile,savefilepath):

    #读入图片

    img = Image.open(sourcefile)

        # 'D:/1.png')

    image= img.convert('RGBA')

    

    if image.mode == 'RGBA':

        r,g,b,a = image.split()

        rgb_image = Image.merge('RGB', (r,g,b))

#反色处理

        inverted_image = PIL.ImageOps.invert(rgb_image)

 

        r2,g2,b2 = inverted_image.split()

 

        final_transparent_image = Image.merge('RGBA', (r2,g2,b2,a))

        # ImageEnhanced1 = ImageEnhance.Brightness(final_transparent_image).enhance(1)#获得亮度加强器实例 

        ImageEnhanced2 = ImageEnhance.Brightness(final_transparent_image).enhance(1)

        # ImageEnhanced3 = ImageEnhance.Brightness(final_transparent_image).enhance(3)

        if not os.path.exists(savefilepath):

        #创建路径

            os.makedirs(savefilepath)

        ImageEnhanced2.save(os.path.join(savefilepath,os.path.basename(sourcefile)))

        print("success:" + os.path.join(savefilepath,os.path.basename(sourcefile)))

        #imgall=[image,final_transparent_image,ImageEnhanced]

        # plt.figure("")

        # plt.figure(num=1, figsize=(8,5),)

        # plt.title('The image title')

        # plt.axis('off') # 不显示坐标轴

        # plt.subplot(321),plt.imshow(image),plt.title("321"),plt.xticks([]),plt.yticks([])

        # plt.subplot(322),plt.imshow(final_transparent_image),plt.title("321"),plt.xticks([]),plt.yticks([])

        # plt.subplot(323),plt.imshow(ImageEnhanced1),plt.title("321"),plt.xticks([]),plt.yticks([])

        # plt.subplot(324),plt.imshow(ImageEnhanced2),plt.title("321"),plt.xticks([]),plt.yticks([])

        # plt.subplot(325),plt.imshow(ImageEnhanced3),plt.title("321"),plt.xticks([]),plt.yticks([])

 

        # plt.subplot(221)

        # plt.imshow(image,final_transparent_image,ImageEnhanced)

        # plt.imshow(ImageEnhanced)

        # plt.show()

    else:

        inverted_image = PIL.ImageOps.invert(image)

        inverted_image.save('.png') 

def batchInit():

    file="D:/sl"

    for root, dirs, files in os.walk(file):

        # root 表示当前正在访问的文件夹路径

        # dirs 表示该文件夹下的子目录名list

        # files 表示该文件夹下的文件list

        for d in dirs:

            # print(os.path.join(root, d))

            filepath2 = os.path.join(root, d)

            for root2, dirs2, files2 in os.walk(filepath2):

                for d2 in dirs2:

                    filepath3 = os.path.join(root2, d2)

                    for root3, dirs3, files3 in os.walk(filepath3):                

                        for f in files3:

                            # print(os.path.join(root3, f))

                            savefilepath = os.path.join(root3.replace("sl","sl_blue"))

                            convertImage(os.path.join(root3, f),savefilepath)

    print("处理完毕!")

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值