Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3648138
  • 博文数量: 365
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2522
  • 用 户 组: 普通用户
  • 注册时间: 2019-10-28 13:40
文章分类

全部博文(365)

文章存档

2023年(8)

2022年(130)

2021年(155)

2020年(50)

2019年(22)

我的朋友

分类: Python/Ruby

2022-09-22 17:16:37

import 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('*'))

def get_access_token():

    url = ''

    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 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() 

#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()    

def get_size():

    size = os.path.getsize(name)

    return size / 1024    

def fullwhite(png_name):

    im = Image.open(png_name)

    x,y = im.size

    try:

        使用白色来填充背景

        # (alpha band as paste mask).

        p = Image.new('RGBA', im.size, (255,255,255))

        p.paste(im, (0, 0, x, y), im)

        p.save(png_name)

    except:

        pass 

def removebg():

    try:

        request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_seg"

        二进制方式打开图片文件

        f =外汇跟单gendan5.com 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_jpg(png_name)

            os.remove(png_name)

            print(name+"\t处理成功!")

    except Exception as e:

        pass

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(" ")

阅读(418) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~