一、代碼
import base64 import requests class AnimeDemo: def __init__(self,AK,SK): self.AK=AK self.SK=SK self.access_token=self.get_access_token() def get_access_token(self): token_host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={ak}&client_secret={sk}'.format( ak=self.AK, sk=self.SK) header = {'Content-Type': 'application/json; charset=UTF-8'} response = requests.post(url=token_host, headers=header) content = response.json() access_token = content.get("access_token") return access_token def baidu_selfie_anime(self,image_path,save_path): request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime" # 二進制方式打開圖片文件 f = open(image_path, 'rb') img = base64.b64encode(f.read()) params = {"image": img} request_url = request_url + "?access_token=" + self.access_token headers = {'content-type': 'application/x-www-form-urlencoded'} try: response = requests.post(request_url, data=params, headers=headers) if response.status_code==200: result= response.json() print(result) image=result.get("image") if image: img_data=base64.b64decode(image) with open(save_path,"wb") as f: f.write(img_data) return {"msg":"完成"} return {"msg":"失敗"} except Exception as e: return {"msg":"失敗:%s"%e} if __name__ == '__main__': AK = "*******" # 官網獲取的AK 需要你先開通和創建應用 SK = "*******" # 官網獲取的SK anime_obj = AnimeDemo(AK=AK, SK=SK) res=anime_obj.baidu_selfie_anime(r"D:\images\微信圖片_20200722221927.jpg",r"C:\Users\Administrator\Desktop\卡通.jpg") print(res)
二、效果
感覺一般般,反正有500次免費的,湊合!
三、增加圖像風格
import base64 import requests class AnimeDemo: def __init__(self, AK, SK): self.AK = AK self.SK = SK self.access_token = self.get_access_token() def get_access_token(self): token_host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={ak}&client_secret={sk}'.format( ak=self.AK, sk=self.SK) header = {'Content-Type': 'application/json; charset=UTF-8'} response = requests.post(url=token_host, headers=header) content = response.json() access_token = content.get("access_token") return access_token def baidu_selfie_anime(self, image_path, save_path): request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime" # 二進制方式打開圖片文件 f = open(image_path, 'rb') img = base64.b64encode(f.read()) params = {"image": img} request_url = request_url + "?access_token=" + self.access_token headers = {'content-type': 'application/x-www-form-urlencoded'} try: response = requests.post(request_url, data=params, headers=headers) if response.status_code == 200: result = response.json() print(result) image = result.get("image") if image: img_data = base64.b64decode(image) with open(save_path, "wb") as f: f.write(img_data) return {"msg": "完成"} return {"msg": "失敗"} except Exception as e: return {"msg": "失敗:%s" % e} def baidu_style_trans(self, image_path, save_path): ''' 圖像風格轉換 cartoon:卡通畫風格 pencil:鉛筆風格 color_pencil:彩色鉛筆畫風格 warm:彩色糖塊油畫風格 wave:神奈川沖浪里油畫風格 lavender:薰衣草油畫風格 mononoke:奇異油畫風格 scream:吶喊油畫風格 gothic:哥特油畫風格 ''' request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/style_trans" # 二進制方式打開圖片文件 f = open(image_path, 'rb') img = base64.b64encode(f.read()) params = {"image": img, "option": "gothic"} request_url = request_url + "?access_token=" + self.access_token headers = {'content-type': 'application/x-www-form-urlencoded'} try: response = requests.post(request_url, data=params, headers=headers) if response.status_code == 200: result = response.json() print(result) image = result.get("image") if image: img_data = base64.b64decode(image) with open(save_path, "wb") as f: f.write(img_data) return {"msg": "完成"} return {"msg": "失敗"} except Exception as e: return {"msg": "失敗:%s" % e}