IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 图片格式转换 png,jpg,gif等格式 的python小程序 -> 正文阅读

[移动开发]图片格式转换 png,jpg,gif等格式 的python小程序

图片格式转换 png,jpg,gif等格式 的python可视化程序

一:前提

python实现图片的各种格式转换,支持较多格式(png、jpg、gif、bmp、im、pcx、ppm)的可视化界面

二:代码

直接上代码!

import os
from PIL import Image
import shutil
import sys
import PySimpleGUI as sg
import tkinter as tk
from tkinter import filedialog

def image2png(dataset_dir,type):
    files = []
    image_list = os.listdir(dataset_dir)
    files = [os.path.join(dataset_dir, _) for _ in image_list]
    for index,jpg in enumerate(files):
        if index > 100000:
            break
        try:
            sys.stdout.write('\r>>Converting image %d/100000 ' % (index))
            sys.stdout.flush()
            im = Image.open(jpg)
            png = os.path.splitext(jpg)[0] + "." + type
            im.save(png)
            # 将已经转换的图片移动到指定位置
            '''
            if jpg.split('.')[-1] == 'jpg':
                shutil.move(png,output_dirLR)
            else:
                shutil.move(png,output_dirHR)
            '''
            shutil.move(png, dataset_dir)
        except IOError as e:
            print('could not read:',jpg)
            print('error:',e)
            print('skip it\n')

    sys.stdout.write('Convert Over!\n')
    sys.stdout.flush()

def transforSeparateFile(dataset_dir,type):
    try:
        im = Image.open(dataset_dir)
        Targetim = os.path.splitext(dataset_dir)[0] + "." + type
        im.save(Targetim)
    except IOError as e:
        print('could not read:',dataset_dir)
        print('error:',e)
        print('skip it\n')
    print("Converting "+dataset_dir+"  成功的转为"+type+"格式")

def getLocalFile():#选择并获取本地文件路径
    root=tk.Tk()
    root.withdraw()
    filePath=filedialog.askopenfilename().replace('/','\\')
    return filePath

def getLocalFolder(values):#选择并获取本地目录
    root=tk.Tk()
    root.withdraw()
    FolderPath=filedialog.askdirectory().replace('/','\\')
    return FolderPath

def startTransfor(values):
    Location=values['keyMainWindowPlaintextTagretToBeTransfor']

    type=values['keyMainWindowTargetFormat']
    if os.path.splitext(Location)[1] == "":
        # 选择的是文件夹
        image2png(os.path.splitext(Location)[0],type)
    else:
        # 选择的是单一的图片
        transforSeparateFile(Location,type)

def main():
    try:
        # 创建 mainWindow 布局
        # simpleGui.theme('DarkGreen6')

        column1 = [
            [sg.Text('                                                                                  1',background_color='#CCCCCC',text_color='#000000')],
            [sg.Button('   选择转换的图片文件   ', key='keyMainWindowFileChoose',button_color='#CD5C5C')],
            [sg.Button('选择转换的图片文件目录', key='keyMainWindowFolderChoose',button_color='#CD5C5C'),
             sg.Text('< =整个文件内的图片都会生成其对选择类型的图片,若已存在目标同名的文件会被覆盖')],
        ]
        column2 = [
            [sg.Text('                                                                                  2',background_color='#CCCCCC',text_color='#000000')],
            [sg.Text('              选择的图片文件或者目录如下                   ',background_color='#696969')],
            [sg.Input(key='keyMainWindowPlaintextTagretToBeTransfor', size=(90, 1))],
            [sg.Text('                                                      ',background_color='#CCCCCC')],
        ]
        column3 = [
            [sg.Text('                                                                                  3',background_color='#CCCCCC',text_color='#000000')],
            [sg.Text('                         选择目标格式                              ',background_color='#696969')],
            [sg.InputCombo(['png', 'jpg','gif','bmp','im','pcx','ppm'],key='keyMainWindowTargetFormat',size=(50, 3))],
            [sg.Text('                                                                                   ',background_color='#CCCCCC',text_color='#000000')],
            [sg.Text('                                                                                   ',background_color='#CCCCCC',text_color='#000000')],
            [sg.Text('                                                                                   ',background_color='#CCCCCC',text_color='#000000')],
            [sg.Button('       开始转换       ', key='keyMainWindowTransforStart',button_color='#4682B4')],
        ]

        mainWindowLayout = [
            [sg.Text('                                                                           ')],
            [sg.Column(column1, background_color='#CCCCCC',size=(700,120),)],
            [sg.Text('                                                                           ')],
            [sg.Column(column2, background_color='#CCCCCC',size=(700,110),)],
            [sg.Text('                                                                           ')],
            [sg.Column(column3, background_color='#CCCCCC',size=(700,200),)],
        ]

        # 创建窗口,引入布局,并进行初始化。
        mainWindow = sg.Window('图片格式转换', layout=mainWindowLayout, finalize=True)

        # 创建一个事件循环,否则窗口运行一次就会被关闭。
        while True:
            window, event, values = sg.read_all_windows()
            print("点击了主窗口")
            # print(window, event, values)  # 可以打印一下着看变量的内容
            if window == mainWindow:
                if event in (sg.WIN_CLOSED,  'keyMainWindowOk', 'keyMainWindowCancel'):
                    break

                elif event == 'keyMainWindowFileChoose':
                    filePath = getLocalFile();
                    mainWindow['keyMainWindowPlaintextTagretToBeTransfor'].update(filePath)

                elif event == 'keyMainWindowFolderChoose':
                    folderPath = getLocalFolder(values);
                    mainWindow['keyMainWindowPlaintextTagretToBeTransfor'].update(folderPath)

                elif event == 'keyMainWindowTransforStart':
                    Location=values['keyMainWindowTargetFormat']
                    print(Location)
                    startTransfor(values)

        # 关闭窗口
        mainWindow.close()

    except Exception as result:
        print("函数 main 捕捉到异常:%s" % result)




if __name__ == "__main__":
    current_dir = os.getcwd()
    print(current_dir)
    main()

最后的运行效果如下(比较简陋)

在这里插入图片描述

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 14:01:50  更:2022-01-01 14:02:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:19:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码