AI绘画是一种使用人工智能技术进行绘画创作的方法,其基本原理是运用算法和机器学习技术,根据训练数据自动生成新的艺术作品,用户可以通过简单的文字或图像描述来快速生成符合要求的艺术作品,AI绘画不仅能够模拟传统艺术风格,还可以创建出具有创新和独特性的艺术作品,目前,AI绘画的技术类型主要包括生成对抗网络(GAN)和变分自编码器(VAE)。AI绘画具有广泛的应用场景,主要集中在艺术和设计领域。那么腾讯云AI绘画(AI ART)是一个先进的AI图像生成与编辑API服务,如今已实现了设计任务的自动化,能够自动完成一些重复性高的设计任务,如图像处理和图形设计。此外,通过智能分析和预测功能,还能为创作者提供针对性的设计建议和优化方案,让其能更加专注于提升设计的整体质量。
智能文生图(Text-to-Image Generation)是人工智能生成内容(AIGC)的一个主要方向。它是一种前沿的图像生成方法,通过输入文字描述,即可生成相对应的图片。文生图技术在内容生产等领域有着广泛的应用前景,例如艺术创作、设计、媒体等。
文生图融合了扩散算法、神经网络和提示技术的创新图像生成方法。通过稳定的逐步扩散过程,结合文本提示和微调技术,它能够生成高质量、创意性的图像。这一方法不仅在艺术创作中具有巨大潜力,还在设计、媒体等领域有着广泛的应用潜力。随着技术的不断演进,文生图将在图像生成领域发挥越来越重要的作用,为创作者们带来更多的创作灵感和可能性。
智能文生图的应用场景非常广泛,以下是一些常见的应用场景:
总之,智能文生图可以应用于各种需要生成图像的场景,提高生产效率、降低成本,并为创作者提供更多的创意自由。
我们可以前往腾讯云 AI 绘画功能体验一下 腾讯云AI绘画特惠活动 每个月拥有 20 次的体验机会
在文本描述当中输入您想要生成图片的描述即可
比如:
飞流直下三千尺,疑是银河落九天 | 水墨画
一只酷酷的狗 | 厚涂风格
一幅优美的风景画,风吹麦浪,远处是连绵的山脉 | 插图
点击高级参数我们可以进行设置生成的图片的大小以及生成图片当中不希望出现的瑕疵
比如:
我这里输入的描述: 飞流直下三千尺,疑是银河落九天 | 水墨画 可以看到很形象的水墨画,那么我们可以将生成出来的图片进行二次改造那么就归功于图生图的模式了接下来我带大家来看看
智能图生图是一种利用人工智能技术,根据给定的图片和提示词生成新的图片的过程。在这个过程中,AI会学习参考图片的信息,如颜色、纹理等,并结合提示词生成与参考图片相似但具有不同细节和内容的新图片。
图生图的原理是通过“加噪”和“去噪”的过程,使AI能够从参考图片中获取特征,并将其反映到最终生成的图片中。这使得生成的图片与参考图片具有足够的相似性,同时也具有新的细节和内容。
智能图生图的应用范围广泛,可以用于创作漫画、插画、设计等,也可以用于图像修复、去水印等场景。
那么细心的同学就看到了旁边的图生图的功能模块了,相比文生图风格就没那么的多了它拥有日系动漫、唯美古风、水彩画、美系动漫、2.5D 这四种风格
接下来我们使用文生图的图片来进行图生图进行优化一下体验感受,我这里就使用官方自带的人脸图像来看看感觉
我这里给的 prompt: 粉色,汉服,高清,唯美,漂亮,不要太白,正常
反向词语: 模糊,扭曲,损坏
可以看到我们输出出来的图片很精致水哒哒的 hhh,这归功于腾讯云 AI 绘画强大的中文理解能力可以更好地支持中文元素的图像生成
那么我们差不多已经了解了腾讯云 AI 绘画的能力,那么想不想自己搭建一个来玩呢?
那么腾讯云 AI 绘画训练营免费的给学员提供了文生图、图生图各 50 次的 API 调用能力我们一起来玩玩吧!
人工智能正在加速渗透到千行百业与大众生活中,个体、企业该如何面对新一轮的AI技术浪潮?为了进一步帮助用户了解和使用腾讯云AI系列产品,腾讯云AI技术专家与传智教育人工智能学科高级技术专家正在联合打造《腾讯云AI绘画-StableDiffusion图像生成》训练营,训练营将通过8小时的学习带你玩转AI绘画。并配有专属社群答疑,助教全程陪伴,在AI时代,助你轻松上手人工智能,快速培养AI开发思维。
先去领取到资格再往下看哦~
AI绘画--提供API服务
点我前往腾讯云AI绘画API服务,点击产品控制台跟着提示来操作,操作完毕后我们点击文生图
我们直接查看我们的接口文档看看如何进行对接
我们点击接口文档看看咋对接
一般这种腾讯云都会有 API 调试器的所以我们稍微的过一下这个接口文档我们直接去 API 调试器去玩
接口描述
接口请求域名: aiart.tencentcloudapi.com
智能文生图接口将根据输入的描述文本,智能生成与之相关的结果图。
输入:256个字符以内的描述性文本,推荐使用中文。
输出:对应风格及分辨率的 AI 生成图。
可支持的风格详见 智能文生图风格列表,请将列表中的“风格编号”传入 Styles 数组,建议选择一种风格。
官方建议我们进行风格的单选,后面我们也就搞单选就完事了
智能文生图可支持的风格详见下表,若需选择风格,请将下表中的风格编号传入接口入参中的 Styles 数组。
风格单选(建议):让一张生成图具备某一种风格的特征,为提高效果稳定性,建议选择且只选择一种风格。取值示例:如果您想生成一张水墨画风格的图片,请在下表中找到水墨画对应的风格编号为101,向 Styles 传入:"101"。
风格多选(不建议):实际使用中发现对同一张图片叠加多种风格容易导致生成效果不稳定,因此,为了保障较好的效果,如果您在一次调用中同时传入了多个风格编号,接口将自动取第一个风格编号作为实际输入。例如您传入"101", "102", "103",将只取101。
请求频率限制为1次/秒,别搞快了我们就 3 秒一次就完事了
注意⚠️:
如果选择“不限定风格”,模型将不固定生成的风格,大部分情况下将生成写实图片,也可能随机生成其他风格,此时您可以在 prompt 中输入风格特征描述来自定义风格,例如“一只小狗,xx风格”。
如果选择某一种特定风格,模型将固定生成该风格的图片,通过 prompt 较难改变其风格特征或自定义为其他风格。
风格大类 | 风格细项 | 风格编号 |
---|---|---|
不限定风格 | 不限定风格 | 000 |
艺术绘画类 | 水墨画 | 101 |
概念艺术 | 102 | |
油画1 | 103 | |
油画2(梵高) | 118 | |
水彩画 | 104 | |
像素画 | 105 | |
厚涂风格 | 106 | |
插图 | 107 | |
剪纸风格 | 108 | |
印象派1(莫奈) | 109 | |
印象派2 | 119 | |
2.5D | 110 | |
古典肖像画 | 111 | |
黑白素描画 | 112 | |
赛博朋克 | 113 | |
科幻风格 | 114 | |
暗黑风格 | 115 | |
3D | 116 | |
蒸汽波 | 117 | |
游戏动漫类 | 日系动漫 | 201 |
怪兽风格 | 202 | |
唯美古风 | 203 | |
复古动漫 | 204 | |
游戏卡通手绘 | 301 | |
专业写实类 | 通用写实风格 | 401 |
好了我们就稍微了解一下文生图的一些注意事项和参数就行,还是刚才的页面我们直接进去 API 调试
这里调试好直接运行就完事了
我们可以看到输入参数很多但是具体可以实现图片生成的参数就一个其他的都是对其进行优化接下来我们来看看这些参数的意思吧, Prompt
文本描述是必须传递的!!!
参数名称 | 描述 |
---|---|
Prompt 必须传递 | 文本描述。 算法将根据输入的文本智能生成与之相关的图像。建议详细描述画面主体、细节、场景等,文本描述越丰富,生成效果越精美。 不能为空,推荐使用中文。最多可传256个 utf-8 字符。 示例值:雨中, 竹林, 小路 |
NegativePrompt | 反向文本描述。 用于一定程度上从反面引导模型生成的走向,减少生成结果中出现描述内容的可能,但不能完全杜绝。 推荐使用中文。最多可传256个 utf-8 字符。 |
Styles.N | 绘画风格。 请在 智能文生图风格列表中选择期望的风格,传入风格编号。 推荐使用且只使用一种风格。不传默认使用201(日系动漫风格)。 |
ResultConfig | 生成图结果的配置,包括输出图片分辨率和尺寸等。 支持生成以下分辨率的图片:768:768(1:1)、768:1024(3:4)、1024:768(4:3)、1024:1024(1:1)、720:1280(9:16)、1280:720(16:9)、768:1280(3:5)、1280:768(5:3)、1080:1920(9:16)、1920:1080(16:9),不传默认使用768:768。 |
RspImgType | 返回图像方式(base64 或 url) ,二选一,默认为 base64。url 有效期为1小时。 示例值:base64 |
我们输入 Prompt 参数 旁边的代码生成器就已经把 Demo 搞好了
我们点击旁边的在线调用按钮发起生成测试 通过API发送请求等同于真实操作,请小心进行
请求成功没毛病返回了 以下的数据结构 其中 ResultImage 就是我们的图片信息,我们访问看看
data:image/jpeg;base64,
加 ResultImage 返回的 base64 数据
"Response": {
"RequestId": "dbee275e-03ad-4040-992c-4b0def7bce05",
"ResultImage": "base64"
}
在上面的请求参数我没说 LogoParam
这个参数
他的作用为 标识内容设置。 默认在生成结果图右下角添加“图片由 AI 生成”字样,您可根据自身需要替换为其他的标识图片 LogoParam 里面需要传递的是一个对象 LogoRect
名称 | 类型 | 必选 | 描述 |
---|---|---|---|
X | Integer | 否 | 左上角X坐标 |
Y | Integer | 否 | 左上角Y坐标 |
Width | Integer | 否 | 方框宽度 |
Height | Integer | 否 | 方框高度 |
生成的图片返回给我 URL 形式的,上面我已经说过了给 RspImgType
参数改成 url
他默认是 Base64
返回图像方式(base64 或 url) ,二选一,默认为 base64。url 有效期为1小时
如果想右下角 计算方法就是 你需要生成的图片大小 - 你水印图片的大小
例如: 768:768 768 - 71 (水印宽) X 轴 、768 - 20 (水印高) Y轴
反正看你想咋调整了随便搞哈哈哈
经过上面的学习、调试我们就已经掌握基本的逻辑了现在我们开始对接搞一个我们自己的服务玩玩
文本生成图片的对接核心代码记得保存一下下哦
@Test
void contextLoads() throws TencentCloudSDKException {
final Credential cred = new Credential(secretId, secretKey);
// 实例化一个http选项,可选的,没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("aiart.tencentcloudapi.com");
// 实例化一个client选项,可选的,没有特殊需求可以跳过
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
// 实例化要请求产品的client对象,clientProfile是可选的
AiartClient client = new AiartClient(cred, "ap-shanghai", clientProfile);
TextToImageRequest req = new TextToImageRequest();
// 根据文本描述生成对应的图片
req.setPrompt("3D,帮我生成一个在海边跳舞的小女孩,还里面有可爱的鱼群,天空上飞舞的百灵鸟");
// 图片的比例大小
ResultConfig resultConfig1 = new ResultConfig();
resultConfig1.setResolution("1920:1080");
req.setResultConfig(resultConfig1);
// 图片的水印
LogoParam logoParam1 = new LogoParam();
logoParam1.setLogoUrl("https://cdn.nlark.com/yuque/0/2023/png/2426233/1702196852392-3083990a-0590-4299-b89c-6c915f2b8a7a.png");
LogoRect logoRect1 = new LogoRect();
logoRect1.setX(697L); // 比例宽 - 水印的宽度
logoRect1.setY(748L); // 比例高 - 水印的高度
logoRect1.setWidth(71L); // 水印的宽度
logoRect1.setHeight(20L); // 水印的高度
logoParam1.setLogoRect(logoRect1);
req.setLogoParam(logoParam1);
// 返回的是URL
req.setRspImgType("url");
// 返回的resp是一个TextToImageResponse的实例,与请求对象对应
final TextToImageResponse resp = client.TextToImage(req);
// 输出json格式的字符串回包
// final String resultImage = "data:image/jpeg;base64," + resp.getResultImage();
System.out.println(TextToImageResponse.toJsonString(resp));
}
发起文生图请求
生成的效果图非常的唯美可爱
和文生图一样的操作,知识调用不同的请求而已
接口描述
接口请求域名: aiart.tencentcloudapi.com
智能文生图接口将根据输入的描述文本,智能生成与之相关的结果图。
输入:256个字符以内的描述性文本,推荐使用中文。
输出:对应风格及分辨率的 AI 生成图。
可支持的风格详见 智能文生图风格列表,请将列表中的“风格编号”传入 Styles 数组,建议选择一种风格。
风格大类 | 风格细项 | 风格编号 |
---|---|---|
艺术绘画类 | 水彩画 | 106 |
2.5D | 110 | |
游戏动漫类 | 日系动漫 | 201 |
美系动漫 | 202 | |
唯美古风 | 203 |
还是一样的操作我们去 API 调试工具测试,并且生成调用代码出来
前往智能图生图 API 调试 : https://cloud.tencent.com/document/product/1668/88066
⚠️ 上面我们已经详细讲解了参数的使用下面我们就不需要再次讲解了
我这里 InputUrl
使用了 URL 当作呗修改的图片,是一个小和尚,并且设置了返回结果是 url 给我
不错给我的小和尚加了一顶头发,那么我们 api 调试就到这里,我们接下来进行 Java 程序来调用
实现我们去随便找个图片,我这里用免费的请求了一张
@Test
void img2img () {
final Credential cred = new Credential(secretId, secretKey);
// 实例化一个http选项,可选的,没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("aiart.tencentcloudapi.com");
// 实例化一个client选项,可选的,没有特殊需求可以跳过
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
// 实例化要请求产品的client对象,clientProfile是可选的
AiartClient client = new AiartClient(cred, "ap-shanghai", clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
ImageToImageRequest req = new ImageToImageRequest();
// 小和尚图片
req.setInputUrl("https://cdn.nlark.com/yuque/0/2023/png/2426233/1703693531198-0eb82442-3b49-4f93-9564-216b78908dff.png?x-oss-process=image%2Fresize%2Cw_768%2Climit_0");
// 文本描述。 用于在输入图的基础上引导生成图效果,增加生成结果中出现描述内容的可能。 推荐使用中文。最多支持256个 utf-8 字符。
req.setPrompt("给小和尚新增一顶头发");
// 反向描述
req.setNegativePrompt("扭曲、模糊");
// 风格
req.setStyles(new String[]{"201"});
// 分辨率
final ResultConfig config = new ResultConfig();
config.setResolution("768:768");
req.setResultConfig(config);
// 返回格式
req.setRspImgType("url");
// 比例值
String logoRect = config.getResolution();
String[] logoRectArr = logoRect.split(":");
// 图片的水印
LogoParam logoParam1 = new LogoParam();
logoParam1.setLogoUrl("https://cdn.nlark.com/yuque/0/2023/png/2426233/1702196852392-3083990a-0590-4299-b89c-6c915f2b8a7a.png");
LogoRect logoRect1 = new LogoRect();
logoRect1.setWidth(71L); // 水印的宽度
logoRect1.setHeight(20L); // 水印的高度
// 水印的位置
logoRect1.setX(Integer.parseInt(logoRectArr[0]) - logoRect1.getWidth()); // 比例宽 - 水印的宽度
logoRect1.setY(Integer.parseInt(logoRectArr[1]) - logoRect1.getHeight()); // 比例高 - 水印的高度
logoParam1.setLogoRect(logoRect1);
req.setLogoParam(logoParam1);
log.info("请求参数: {}", new Gson().toJson(req));
try {
log.info("请求参数: {}", new Gson().toJson(req));
// 返回的resp是一个ImageToImageResponse的实例,与请求对象对应
ImageToImageResponse resp = client.ImageToImage(req);
log.info("返回参数: {}", resp.getResultImage());
} catch (TencentCloudSDKException e) {
log.error("腾讯云 AIGC 图生成图片异常", e);
throw new RuntimeException("腾讯云 AIGC 图生成图片异常");
}
}
哈哈哈,给小和尚新增了一顶斜刘海非常不错.
好啦,我们就到这里结束啦!!!
后面就是对接前端,如果有感兴趣的同学可以跳转到我写的一篇文章现在已经有 1.5k 的浏览量啦
《这次不从零了五万字带您,从负零玩转腾讯AI绘画图像生成搭建前后端分离项目!!!!》
如果可以的话麻烦点个赞支持一下!!!谢谢您
本期结束咱们下次再见👋~
🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。