前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【腾讯云AI绘画】与AI绘画和解,和AI绘画共成长

【腾讯云AI绘画】与AI绘画和解,和AI绘画共成长

原创
作者头像
叫我阿柒啊
修改2023-12-12 15:38:39
4933
修改2023-12-12 15:38:39
举报

前言

六月份的时候,买了腾讯AI绘画的资源包。可当通过API去使用AI绘画后,我顿时就被整破防了,于是写了一篇文章,算是无声控诉。被腾讯云AI绘画整破防了!

再回首,腾讯绘画不仅提供了API调用,还构建了智能图像创作平台,用于提供AI绘画在线创作能力。同时还在产品页提供了免费20次/月的功能体验

为了我的资源包,也为了征文,我决定再探究一下腾讯AI绘画。

API

API分为文生图和图生图接口,两个接口代码基本相同,这里基于官方提供的样例代码,来进行二次开发。

登录控制台的API Explorer,就可以在线进行调试。AI绘画API Explorer入口

文生图

进入文生图的调试页面,这里我选择使用python。

左侧是类似于产品页的参数,只不过是从选项卡变成了输入框。我们在输入参数的时候,右侧代码也会随之更新。我们着重需要关注的参数就是:RegionPromptStyles,即地区、提示词和风格。

风格我选择201,即日系动漫风格。其他的一些参数都是选填,比如图片长、长宽和RspImgType,RspImgTypee是返回图像方式(base64 或 url) ,默认为base64,url 有效期为1小时。

在填好必选的参数之后,样例代码中会自动假如参数,在本地安装好一些一些依赖之后,粘贴到本地的IDE中进行运行测试。

1. 获取密钥

在本地运行时,需要在创建Credential时传入密钥,这样才能与资源包绑定。密钥可前往官网控制台:AI绘画密钥控制台获取。

在控制台只能看到SecretId, SecretKey只有在创建Id的时候才会显示,所以保存好。

2. 二次开发

在腾讯云提供的代码中,获取的图片结果是base64的,样例代码只是将字符串打印了出来,所以我们需要实现base64转图片、展示图片的功能。

使用了python的PILBytesIOmatplotlib三个模块。

完整代码如下:

代码语言:python
代码运行次数:0
复制
import json
import base64
from io import BytesIO
from PIL import Image
import matplotlib.pyplot as plt
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.aiart.v20221229 import aiart_client, models

try:
    cred = credential.Credential("AKIDc4GDuKTMyJNI2WkiQs3xc180bw88sMYU", "xxxxxxxxxxx")
    # 实例化一个http选项,可选的,没有特殊需求可以跳过
    httpProfile = HttpProfile()
    httpProfile.endpoint = "aiart.tencentcloudapi.com"

    # 实例化一个client选项,可选的,没有特殊需求可以跳过
    clientProfile = ClientProfile()
    clientProfile.httpProfile = httpProfile
    # 实例化要请求产品的client对象,clientProfile是可选的
    client = aiart_client.AiartClient(cred, "ap-shanghai", clientProfile)
    # 实例化一个请求对象,每个接口都会对应一个request对象
    req = models.TextToImageRequest()
    params = {
        "Prompt": "那年樱花树下的女孩 在阳光下 春风里 思密达",
        "Styles": ["201"]
    }
    req.from_json_string(json.dumps(params))
    resp = client.TextToImage(req)
    # 将base64转换成图片展示
    res = json.loads(resp.to_json_string())
    base2Image = base64.b64decode(res['ResultImage'], altchars=None, validate=False)
    image_byte = BytesIO(base2Image)
    image = Image.open(image_byte)
    plt.imshow(image)
    plt.axis("off")
    plt.show()
except TencentCloudSDKException as err:
    print(err)

运行结果如下:

图生图

我们看图生图的API,其实和文生图整体区别不大,只是接口方法不同。

图生图模块需要自己的实现两个模块:

  1. 将原图片转换成base64给接口传参
  2. 将AI绘画返回的base64转换成图片并展示,这个在文生图已经实现

下面代码就是将原图片转换成base64,然后传给了InputImage作为参数。

代码运行结果:

输入图和AI绘画对比:

左侧是我输入的图片,右侧是AI绘画返回的图片,选择的是201日系漫画的风格,整体来说还是可圈可点的。

附上整体代码:

代码语言:python
代码运行次数:0
复制
import json
import base64
from io import BytesIO
from PIL import Image
import matplotlib.pyplot as plt
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.aiart.v20221229 import aiart_client, models

try:
    cred = credential.Credential("AKIDc4GDuKTMyJNI2WkiQs3xc180bw88sMYU", "xxxxxx")
    # 实例化一个http选项,可选的,没有特殊需求可以跳过
    httpProfile = HttpProfile()
    httpProfile.endpoint = "aiart.tencentcloudapi.com"

    # 实例化一个client选项,可选的,没有特殊需求可以跳过
    clientProfile = ClientProfile()
    clientProfile.httpProfile = httpProfile
    # 实例化要请求产品的client对象,clientProfile是可选的
    client = aiart_client.AiartClient(cred, "ap-shanghai", clientProfile)
    image_source = Image.open('source.JPG')
    byte_source = BytesIO()
    image_source.save(byte_source, format="JPEG")
    byte_data = byte_source.getvalue()
    base64_str = base64.b64encode(byte_data).decode("ascii")

    # 实例化一个请求对象,每个接口都会对应一个request对象
    req = models.ImageToImageRequest()
    params = {
        "InputImage": base64_str,
        "Styles": ["201"]
    }
    req.from_json_string(json.dumps(params))

    # 返回的resp是一个ImageToImageResponse的实例,与请求对象对应
    resp = client.ImageToImage(req)
    res = json.loads(resp.to_json_string())
    base2Image = base64.b64decode(res['ResultImage'], altchars=None, validate=False)
    image_byte = BytesIO(base2Image)
    image = Image.open(image_byte)
    plt.imshow(image)
    plt.axis("off")
    plt.show()

except TencentCloudSDKException as err:
    print(err)

智能图像创作平台

智能图像创作平台是一个SaaS平台,软件即服务,提供了很多AI绘画能力。作为一个软件,不出意外的话是要开通会员才能使用,不过这里会免费赠送10张。

1. 文生图

文生图这里输入了关键字:少年、ninja400、人潮人海

选择赛博朋克风格,点击生成图片。

整体质量比刚推出AI绘画的时候强了不少。

2. 图生图

这里我上传了自己骑车的照片,选择了日系动漫风格,修改尺寸的话需要VIP,所以这里就是用默认尺寸。

生成的图片感觉还可以,日系漫画的那种清新风。

但是美中不足的是,这里的风格选项没有赛博朋克。从易用性的角度来讲,这个平台还是不错的。

结语

之前在摩托车追焦群里,看博主用其他AI图生图的赛博朋克追焦照片,的确是很惊艳,所以腾讯云的AI绘画平台,可以借鉴一些开源的AI软件,来做一些细节功能的提升。

但是和刚开始比较,腾讯AI绘画的能力提升也是肉眼可见的,希望能与AI绘画共成长。最近也在自学Stable Diffusion,目前已经在本地配置好了环境,安装了绘世的整合包,期待共同学习,共同成长。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • API
    • 文生图
      • 1. 获取密钥
      • 2. 二次开发
    • 图生图
      • 1. 文生图
      • 2. 图生图
  • 智能图像创作平台
  • 结语
相关产品与服务
大模型图像创作引擎
大模型图像创作引擎是一款提供 AI 图像生成与处理能力的 API 技术服务,可以结合输入的文本或图片智能创作出与输入相关的图像内容,具有更强大的中文理解能力、更多样化的风格选择,更好支持中文场景下的建筑风景生成、古诗词理解、水墨剪纸等中国元素风格生成,以及各种动漫、游戏风格的高精度图像生成和风格转换,为高质量的内容创作、内容运营提供技术支持。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档