本站工具软件、网站源码、网赚项目、网站插件等所有资源均可免费下载!

CJ0055 科大讯飞AI图片生成 API 接口接入

酷软资源分享

讯飞图片生成是根据用户输入的文字内容,生成符合语义描述的不同风格的图像。

index.php获取文字及图片参数供Python调用

<?php
header('Access-Control-Allow-Origin:*');
header('Content-type: application/json');

$text=isset($_GET['text'])? $_GET['text'] :null; 
if(empty($text)){die("请传入文本参数");}

$width = isset($_GET['width'])? $_GET['width'] :null; 
$height = isset($_GET['height'])? $_GET['height'] :null; 
if(empty($width)||empty($height)){die("请传入图片完整尺寸参数");}

$str = exec("python3 w2p.py $text $width $height");
$data = json_decode($str, true); 

$response_msg = $data["code"];
if($response_msg == "200") {$code = "200";}
else{$code = "202";}
$image = $data["image"];

$json_return = array(
    "code" => $code,
    "src" => $text,
    "image" => "你的api网络位置".$image
);
echo json_encode($json_return, JSON_UNESCAPED_UNICODE);
Python请求讯飞识别接口:w2p.py文件写入内容
# encoding: UTF-8
import time

import requests
from datetime import datetime
from wsgiref.handlers import format_date_time
from time import mktime
import hashlib
import base64
import hmac
from urllib.parse import urlencode
import json
from PIL import Image
from io import BytesIO
import json
import sys

class AssembleHeaderException(Exception):
    def __init__(self, msg):
        self.message = msg

class Url:
    def __init__(this, host, path, schema):
        this.host = host
        this.path = path
        this.schema = schema
        pass

# calculate sha256 and encode to base64
def sha256base64(data):
    sha256 = hashlib.sha256()
    sha256.update(data)
    digest = base64.b64encode(sha256.digest()).decode(encoding='utf-8')
    return digest

def parse_url(requset_url):
    stidx = requset_url.index("://")
    host = requset_url[stidx + 3:]
    schema = requset_url[:stidx + 3]
    edidx = host.index("/")
    if edidx <= 0:
        raise AssembleHeaderException("invalid request url:" + requset_url)
    path = host[edidx:]
    host = host[:edidx]
    u = Url(host, path, schema)
    return u

# 生成鉴权url
def assemble_ws_auth_url(requset_url, method="GET", api_key="", api_secret=""):
    u = parse_url(requset_url)
    host = u.host
    path = u.path
    now = datetime.now()
    date = format_date_time(mktime(now.timetuple()))
    # print(date)
    # date = "Thu, 12 Dec 2019 01:57:27 GMT"
    signature_origin = "host: {}\ndate: {}\n{} {} HTTP/1.1".format(host, date, method, path)
    # print(signature_origin)
    signature_sha = hmac.new(api_secret.encode('utf-8'), signature_origin.encode('utf-8'),
                             digestmod=hashlib.sha256).digest()
    signature_sha = base64.b64encode(signature_sha).decode(encoding='utf-8')
    authorization_origin = "api_key=\"%s\", algorithm=\"%s\", headers=\"%s\", signature=\"%s\"" % (
        api_key, "hmac-sha256", "host date request-line", signature_sha)
    authorization = base64.b64encode(authorization_origin.encode('utf-8')).decode(encoding='utf-8')
    # print(authorization_origin)
    values = {
        "host": host,
        "date": date,
        "authorization": authorization
    }

    return requset_url + "?" + urlencode(values)

# 生成请求body体
def getBody(appid,text,width,height):
    body= {
        "header": {
            "app_id": appid,
            "uid":"123456789"
        },
        "parameter": {
            "chat": {
                "domain": "general",
                "width": width,
                "height": height,
                "temperature":0.5,
                "max_tokens":4096
            }
        },
        "payload": {
            "message":{
                "text":[
                    {
                        "role":"user",
                        "content":text
                    }
                ]
            }
        }
    }
    return body

# 发起请求并返回结果
def main(text,appid,apikey,apisecret,width,height):
    host = 'http://spark-api.cn-huabei-1.xf-yun.com/v2.1/tti'
    url = assemble_ws_auth_url(host,method='POST',api_key=apikey,api_secret=apisecret)
    content = getBody(appid,text,width,height)
    # print(time.time())
    response = requests.post(url,json=content,headers={'content-type': "application/json"}).text
    # print(time.time())
    return response

#将base64 的图片数据存在本地
def base64_to_image(base64_data, save_path):
    # 解码base64数据
    img_data = base64.b64decode(base64_data)

    # 将解码后的数据转换为图片
    img = Image.open(BytesIO(img_data))

    # 保存图片到本地
    img.save(save_path)

# 解析并保存到指定位置
def parser_Message(message):
    data = json.loads(message)
    # print("data" + str(message))
    code = data['header']['code']
    if code != 0:
        print(f'请求错误: {code}, {data}')
    else:
        text = data["payload"]["choices"]["text"]
        imageContent = text[0]
        # if('image' == imageContent["content_type"]):
        imageBase = imageContent["content"]
        imageName = data['header']['sid']
        savePath = f"data/{imageName}.jpg"
        base64_to_image(imageBase,savePath)
        # print("图片保存路径:" + savePath)
        jsondata = {
            "code": "200",
            "image": "/data/" + imageName + ".jpg"
        }
        json_data = json.dumps(jsondata)
        print(json_data)

if __name__ == '__main__':
    #运行前请配置以下鉴权三要素,获取途径:https://console.xfyun.cn/services/tti
    APPID ='xxxxxx'
    APISecret = 'xxxxxx'
    APIKEY = 'xxxxxx'
    desc = sys.argv[1]
    WIDTH = int(sys.argv[2])
    HEIGHT = int(sys.argv[3])
    res = main(desc,appid=APPID,apikey=APIKEY,apisecret=APISecret,width=WIDTH,height=HEIGHT)
    # print(res)
    #保存到指定位置
    parser_Message(res)

注意新建data数据文件夹,填写讯飞鉴权三要素

调用示例

你的api网络位置/?text=白日依山尽,黄河入海流&width=512&height=512

返回数据

{
“code”: “200”,
“src”: “生成一张图:白日依山尽,黄河入海流”,
“image”: “你的api网络位置/data/cht000bc10b@dx19067ff76f0b8f3550.jpg”
}

CJ0055 科大讯飞AI图片生成 API 接口接入
CJ0055 科大讯飞AI图片生成 API 接口接入

搜索编码:CJ0055

相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!
喜欢 (0)

下载声明:     本站部分资源来自于网络收集,若侵犯了你的隐私或版权,请及时联系我们删除有关信息。

                        本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

                        本站信息来自网络,版权争议与本站无关。您必须在下载后的 24 个小时之内,从您的电脑或手机中彻底删除上述内容。

                        如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

您必须 登录 才能发表评论!