"Это 10-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г.".
План этажа города
что-то сказать
В то время, когда я не знал Python, мне приходилось скачивать программу XX ID Photo, чтобы сделать фотографию на документы, это стоило 5 юаней каждый раз.
Необходимая конфигурация
Убедитесь, что все указанные ниже библиотеки установлены.
Основные задействованные библиотеки:
ткинтер: реализацияGUIПрограммирование (такие компоненты, как текстовые поля, кнопки, метки и т. д., реализуют разработку графического интерфейса).
ПИЛ: сторонняя библиотека обработки изображений очень мощная.Из-за большого количества пользователей и настоящего скота она почти считаетсяPythonОфициальная библиотека обработки изображений.
pathlib: объектно-ориентированный способ программирования для представления путей файловой системы.
ttkтемы:tkinterПакеты тем, чтобы ваши компоненты выглядели более кокетливо.
Pyinstaller: очень простой пакет.pyфайловая библиотека.
removebg: По названию видно, что это библиотека, посвященная матированию.
удалить конфигурацию bg
Установите соответствующую библиотеку Python
pip install -i https://pypi.douban.com/simple removebg
Получить ключ API
ВходитьRemovebgОфициальный сайт, полная регистрация аккаунта.
После заполнения регистрационной информации на вашу электронную почту будет отправлено письмо с подтверждением.Нажмите, чтобы войти, и вы войдете в следующий интерфейс.
нажмитеRemove image background
Нажмите на красный кругTool & API
нажмитеGet API Key,
нажмитеShowВы можете просмотреть API Key, лучше всего его записать, он будет использоваться в коде позже.
Нет версии интерфейса
Изменить цвет фона изображения
использоватьRemoveBgнеобходимо указать, когдаapi-keyиerror.log(файл, в котором сохраняется сообщение об ошибке), после удаления фона оно будет отображаться висходное изображениеСоздать файл в папке того же уровняxxx_no_bg.png, создайте фоновую доску указанного цвета и вставьте вырезанное изображение на фоновую доску.
# 修改照片背景色
def replace_bg(read_path, save_path, api_key, bg_color='blue'):
# 在程序当前目录创建一个error.log文件来保存错误信息(必要参数)
Path('error.log').touch()
rmbg = RemoveBg(api_key, 'error.log')
# 执行后会在 read_path 同级文件夹内生成一张 xxx_no_bg.png 的图片
rmbg.remove_background_from_img_file(read_path)
img_no_bg = Image.open(read_path + '_no_bg.png')
# 创建一个新的图像,RGB代表真色彩,3通道,
# color可以为颜色英文名 red 或是 十六进制颜色代码 #00FF00
new_img = Image.new('RGB', img_no_bg.size, color=bg_color)
# 将没有背景的图像粘贴到含背景色的图像上
new_img.paste(img_no_bg, (0, 0, *img_no_bg.size), img_no_bg)
new_img.save(save_path)
Изменить размер изображения
Прочитайте картинку и используйте его напрямуюresizeизменить размер изображения,Image.ANTIALIASУстановите высокое качество.
# 修改照片尺寸295x413(标准一寸)
def change_size(read_path, save_path, width=295, height=413):
image = Image.open(read_path)
resized_image = image.resize((int(width), int(height)), Image.ANTIALIAS)
resized_image.save(save_path)
Обновленная версия
Установите тему и заголовок окна
При использовании темы здесьadaptaОфициальная рекомендация, стиль очень красивый.
window = ThemedTk(theme="adapta", fonts=True, themebg=True)
window.title('证件照生成器')
Выберите «Добавить компоненты пути изображения».
Выберите путь к изображению, которое нужно изменить.
def selectFilePath():
global img_path
# 选择文件path接收文件地址
img_path = Path(filedialog.askopenfilename(title='选择原图片'))
x, y = Image.open(img_path).size
entry4.insert(0, str(x) + 'x' + str(y))
path1.set(img_path)
path1 = tk.StringVar()
entry1 = ttk.Entry(window, textvariable=path1, width=30)
entry1.insert(0, '格式要求png')
button1 = ttk.Button(window,width=10, text = "图片路径", command = selectFilePath)
Добавить компонент выбора пути сохранения
Выберите путь сохранения измененного изображения, который является папкой.
def selectDirPath():
global dir_path
# 选择文件path接收文件地址
dir_path = Path(filedialog.askdirectory(title='选择图片保存路径'))
path2.set(dir_path)
path2 = tk.StringVar()
entry2 = ttk.Entry(window, textvariable=path2, width=30)
button2 = ttk.Button(window,width=10, text = "保存路径", command = selectDirPath)
Добавить компонент выбора цвета фона
использовать здесьtkinterизcolorchooserЧтобы использовать его в качестве цветной доски, я должен сказать, что он действительно прост в использовании.
def ChooseColor():
global bg_color
# 返回两种格式的颜色代码,这里只保存十六进制的
_, bg_color = colorchooser.askcolor(title='颜色选择器')
path3.set(bg_color)
path3 = tk.StringVar()
entry3 = ttk.Entry(window, textvariable=path3, width=30)
button3 = ttk.Button(window, text='背景颜色', command=ChooseColor)
Добавить заполнить компонент размера изображения
Если вы хотите изменить изображение, заполните этот столбец, по умолчанию используется исходный размер изображения, если вы хотите стандартный размер здесь, сначала рекомендуется Baidu, например, стандартный один дюйм составляет 295x413 (стандартный один дюйм) .
# 设置图片大小,默认原图大小,格式如295x413(标准一寸)
label = ttk.Label(window, text='默认原图大小,若要修改请按[]内\
格式,如 [295x413] (标准一寸照)', wraplength=200, style='two.TLabel')
entry4 = ttk.Entry(window, width=30)
label1 = ttk.Label(window, text='图片尺寸', style='three.TLabel')
Добавить заполнить компонент API-KEY
Установка отображаемого значения поля ввода на «*» может привести к эффекту скрытия отображаемого значения. Вот для заполнения полученного вышеapi-key.
# 填写api-key
entry5 = ttk.Entry(window, width=30, show="*")
label2 = ttk.Label(window, text='api-key', style='three.TLabel')
Добавьте кнопки управления
- Кнопка «Изменить фон»: Измените только фоновое изображение исходного изображения, вам необходимо указать путь к исходному изображению, путь сохранения, цвет фона и т. д.
- Кнопка "Изменить размер": Измените только размер исходного изображения, вам нужно указать исходный путь к изображению, путь сохранения, размер изображения и т. д.
- Также изменить кнопки: Одновременно измените размер и фон исходного изображения, вам необходимо указать исходный путь к изображению, путь для сохранения, цвет изображения (необязательно), размер изображения (необязательно), если цвет не выбран, размер по умолчанию будет синий фон, а размер изображения 295x413 (стандартный дюйм).
# 添加“同时修改”按钮
button4 = ttk.Button(window, text = "同时修改", command=change_bg_size)
# 添加“修改背景”按钮
button5 = ttk.Button(window, text = "修改背景", command=replace_bg)
# 添加“修改尺寸”按钮
button6 = ttk.Button(window, text = "修改尺寸", command=change_size)
Добавить отображение окна вывода
Отображение информации о результате операции.
# 添加输出框显示
tree = ttk.Treeview(height=1, show=("tree", "headings"))
Установить расположение компонента
использовать здесьgrid()чтобы установить местоположение, вы также можете использоватьpick(), но лично предпочитаю первое.
main_label.grid(row = 0, column = 0, pady=5)
entry1.grid(row = 1, column = 0, pady=5)
button1.grid(row = 1, column = 1, padx=20)
entry2.grid(row = 2, column = 0, pady=5)
button2.grid(row = 2, column = 1, padx=20)
entry3.grid(row = 3, column = 0, pady=5)
button3.grid(row = 3, column = 1, padx=20)
label.grid(row = 4, column = 0, pady=5)
entry4.grid(row = 5, column = 0, pady=5)
label1.grid(row = 5, column = 1, pady=5)
entry5.grid(row = 6, column = 0, pady=5)
label2.grid(row = 6, column = 1, pady=5)
button4.grid(row = 7, column = 1, padx=5)
button5.grid(row = 7, column = 0, padx=5)
button6.grid(row = 8, column = 0, padx=5)
tree.grid(row=9, column=0, pady=5)
Установите стиль компонента
Измените стиль, который вам нравится, на основе оригинального компонента.
label_style = ttk.Style()
label_style.configure("one.TLabel", font=("微软雅黑", 16, 'bold'), foreground="red", background="yellow")
label_style1 = ttk.Style()
label_style1.configure("two.TLabel", font=("微软雅黑", 9), foreground="blue", background="yellow")
label_style2 = ttk.Style()
label_style2.configure("three.TLabel", font=("微软雅黑", 10), foreground="blue", background="yellow")
упаковка исходного кода
Хотя метод упаковки был представлен много раз в предыдущих статьях, но для новых читателей я снова кратко объясню его.
Сначала убедитесь, что вы установилиpyinstaller, вы можете сначала установить его, если он у вас не установлен.
pip install -i https://pypi.douban.com/simple pyinstaller
pyinstallerЗначение общих параметров при использовании:
-F: упаковать один файл, создав один файл для развертывания (по умолчанию), если весь код написан на
.pyфайл, не используйте, когда проект имеет несколько файловpyinstaller -F xxx.py-D: упаковать несколько файлов, создать каталог для развертывания (по умолчанию) и упаковать код, написанный фреймворком.
pyinstaller -D xxx.py(项目入口文件)--key=keys:использовать
keysЗашифрованная упаковкаpyinstaller --key=123456 -F xxx.py-d:производить
debugверсия исполняемого файла-p: используется для добавления местоположения пакета, используемого программой, для установки пути импорта, вы можете использовать
;(Линукс использует:), чтобы указать несколько каталогов.-w: Указывает, что окно консоли не используется, для выполнения используется подсистема Windows, и командная строка не будет открыта при запуске программы (действительно только для Windows)
-c: означает открыть окно консоли, использовать консольную подсистему для выполнения, при запуске программы она откроет командную строку (по умолчанию) (действительно только для Windows)
-i: Добавить file.ico в качестве ресурса исполняемого файла, изменить значок программы (действительно только для системы Windows)
После завершения установки создайте новую папку, поместите исходные файлы в эту папку и откройтеcmd,cd в папку(выделение), выполните следующий оператор
Сгенерированная файловая структура выглядит следующим образом
exeИсполняемый файл находится вdistПод содержанием
❤️Как получить исходный код❤️
Найдите [Python New Horizons] через WeChat и ответьте на «ID Photo Generator», чтобы получить исходный код! Кроме того, вас ждут различные обучающие ресурсы~.