Manchmal müssen wir die Hintergrundfarbe unserer Ausweisfotos ändern und haben keine Zeit, ins Fotostudio zu gehen, um Fotos zu machen, und es ist nicht einfach, die Bilder mit PS auszuschneiden, also werde ich es heute tun Teilen Sie mit Ihnen, wie Sie mit Python die Bilder ausschneiden und die Hintergrundfarbe ändern können eingeben und authentifizieren.
Sie können darin schreiben, was Sie wollen, aber neue Benutzer müssen kostenlose Ressourcen erhalten, sonst haben sie gewonnen Ich kann es nicht benutzen.
Nach Abschluss der Erstellung notieren Sie die Werte von API Key und Secret Key in der Anwendungsliste, die später verwendet werden.
An diesem Punkt sind die Aufgaben der Registrierung eines Kontos und der Erstellung eines Antrags abgeschlossen.
2: Code-Implementierung 1. Bibliothek vorstellenimport os import requests import base64 import cv2 import numpy as np from PIL import Image from pathlib import Path path = os.getcwd() paths = list(Path(path).glob('*'))
2. Zugriffstoken erhalten
def get_access_token(): url = 'https://aip.baidubce.com/oauth/2.0/token' data = { 'grant_type': 'client_credentials', # 固定值 'client_id': '替换成你的API Key', # 在开放平台注册后所建应用的API Key 'client_secret': '替换成你的Secret Key' # 所建应用的Secret Key } res = requests.post(url, data=data) res = res.json() access_token = res['access_token'] return access_token
def removebg(): try: request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_seg" # 二进制方式打开图片文件 f = open(name, 'rb') img = base64.b64encode(f.read()) params = {"image":img} access_token = get_access_token() request_url = request_url + "?access_token=" + access_token headers = {'content-type': 'application/x-www-form-urlencoded'} response = requests.post(request_url, data=params, headers=headers) if response: res = response.json()["foreground"] png_name=name.split('.')[0]+".png" with open(png_name,"wb") as f: data = base64.b64decode(res) f.write(data) fullwhite(png_name) #png图片底色填充,视情况舍去 png_jpg(png_name) #png格式转jpg,视情况舍去 os.remove(png_name) #删除原png图片,视情况舍去 print(name+"\t处理成功!") except Exception as e: pass
def fullwhite(png_name): im = Image.open(png_name) x,y = im.size try: p = Image.new('RGBA', im.size, (255,255,255)) # 使用白色来填充背景,视情况更改 p.paste(im, (0, 0, x, y), im) p.save(png_name) except: pass
#compress_rate:数值越小照片越模糊 def resize(compress_rate = 0.5): im = Image.open(name) w, h = im.size im_resize = im.resize((int(w*compress_rate), int(h*compress_rate))) resize_w, resieze_h = im_resize.size #quality 代表图片质量,值越低越模糊 im_resize.save(name) im.close()
7.png-Format zu jpgdef get_size(): size = os.path.getsize(name) return size / 1024Nach dem Login kopieren
def png_jpg(png_name): im = Image.open(png_name) bg=Image.new('RGB',im.size,(255,255,255)) bg.paste(im) jpg_name = png_name.split('.')[0]+".jpg" #quality 代表图片质量,值越低越模糊 bg.save(jpg_name,quality=70) im.close()
if __name__ == '__main__': for i in paths: name = os.path.basename(i.name) if(name==os.path.basename(__file__)): continue size = get_size() ##照片压缩 while size >=900: size = get_size() resize() removebg() print(" ")
][Verwandte Empfehlungen:
Python3-Video-Tutorial
Das obige ist der detaillierte Inhalt vonFühren Sie Sie Schritt für Schritt durch die Implementierung des Ausschnitts und die Änderung der Hintergrundfarbe über die Python-Aufrufschnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!