Python PIL 库的使用

PIL 构建图像处理系统

  1. 简言
  2. 源代码
  3. 优化日志

1、简言

简言
  这个简单易懂,可扩展性强,需要什么功能就可以扩展,目前依靠 Python 解释器和相关库执行,之后可能会通过打包或做 GUI 扩展等做成 exe 文件。

2、源代码

下面是 全代码

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@Author: _Scale
@File name: IPS.py
@Creative time: 2020/1/14 9:34
@Document description: pillow 模块实现使用菜单执行相应命令进行图像处理(Image_processing_system)
"""

from PIL import Image  # 导入图像处理相关库函数
import random


def safe():
    while True:
        # 安全认证(safety certificate)
        Verification_code = []  # Verification_code译为验证码
        for i in range(4):
            j = random.randint(0, 99)
            if j % 2 == 0:
                temp1 = random.randint(0, 9)
                Verification_code.append(str(temp1))
            else:
                temp2 = random.randint(65, 90)
                Verification_code.append(chr(temp2))
        print('验证码:', ''.join(Verification_code))
        Verification_code_two = ''.join(Verification_code)
        user_input = input('请输入看到的验证码(区分大小写):')

        # 判断验证是否通过
        if user_input == Verification_code_two:
            print('| 验证通过 |')
            break
        else:
            print('-' * 20);print('| 请输入正确的验证码 | ')
            continue


def show_menu():
    """显示菜单模块"""
    print('\033[1;30m%s\033[0m' % '''*******************************************************
                       图像处理系统v2.0                         

  1.灰白渲染         2.退出系统
*******************************************************''')


def convert_image(user):
    '''渲染成灰白图像'''
    img = Image.open(user).convert("L");img.show()
    user_two = input('键入回车键以继续...')
    if user_two == True:
        pass
    try:
        if user_two == 'Y' or 'y':
            user_three = input('请设置保存图像的绝对路径,不保存键入回车键以继续:')
            img.save(user_three)
    except:
        pass


def main():
    """主函数"""
    while True:
        # 提示用户输入
        try:
            user_four = input('键入数字0可退出,按回车键以继续:')
            if user_four in ["0"]:
                break
            else:
                print('-' * 20)
            user = input('请输入需要处理图像的绝对路径:')
            img = Image.open("%s" % user)
            print("此次处理图像的绝对路径是:%s" % user);print("图片长宽:", img.size);print("像素类型:", img.mode);print("图片格式:", img.format)
        except:
            print('-' * 20);print('|请输入正确的绝对路径名!|')  # 路径有误则再次提示用户输入
            continue

        # 显示操作系统菜单
        show_menu()
        number = input('\033[1;30m%s\033[0m' % '请选择需要的序号:')

        # 执行对应功能
        if number in ["1", "2"]:
            if number == "1":
                convert_image(user)
            elif number == "2":
                print('=' * 10);print('\033[1;33m%s\033[0m' % " Goodbye!");print('=' * 10)
                break

        pass


if __name__ == '__main__':
    safe()
    main()

3、优化日志

日志
  因为这个还有很多缺陷,所以希望 CSDN 的大家发现了什么 bug 和不妥的地方就请在评论区留言,我会及时回复和修复 bug!如果有修复 bug 的建议当然就更好啦!
  ps:2020-04-12,增加确认是否能支持大小写;增加一些注释;增加验证码的显示提示;修复验证码正确了却不能通过;去掉了提示语上下的符号。
  ps:2020-04-14,把安全验证封装成了函数,希望之后能优化出更安全的验证算法;如果大佬们觉得有什么地方可以优化的请在评论区留言,我会及时回复!
  ps:2020-05-11,验证码缩减到 4 位;利用分号(;)缩减了几十行代码;过滤掉了大量不必要代码;删掉了很多不完善的功能,之后会努力做出更强大的功能。
  ps:2020-07-15,更正了源码的展示。
  
  感谢 CSDN,感谢 C 友们的支持

你可能感兴趣的:(Python)