Semantic Kernel:文转图

SK也对应了文生图的功能,本文中分别使用的是GPT的DALL·E 2和DALL·E 3来生成图版,虽然不如专业的文生图那么专业,但提示词到位,在一些场景中还是可用的。

项目引用的是当前最新的SK包,1.18.0-rc:


Exe net9.0 Demo07_TextToPicture enable enable



下面是最简单的文生图的代码实现,通过TextToImage服务来完成生成,GPT中生成图的尺寸要求是:256×256, 512×512, 1024×1024, 1024×1792,’1792×1024]

using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.TextToImage;
using System.Diagnostics;
using System.Xml.Linq;

Console.WriteLine(“开始生成……”);

pragma warning disable SKEXP0010

var key = File.ReadAllText(@”C:GPTkey.txt”);
var kernel = Kernel.CreateBuilder()
.AddOpenAITextToImage(key,modelId: “dall-e-2)
.Build();
var prompt1 = $”背景是白色,用墨水,画一匹腾空跃起的骏马。要求马位中图的中央,显示完整。”;
await CreateImageAsync(prompt1);

async Task CreateImageAsync(string prompt)
{

pragma warning disable SKEXP0001

var dallE = kernel.GetRequiredService<ITextToImageService>();
var imageUrl = await dallE.GenerateImageAsync(prompt, 1024, 1024);
await DownLoadImageAsync(imageUrl);

}
async Task DownLoadImageAsync(string imageUrl)
{
var localPath = “downloaded_image.jpg”;
using (var client = new HttpClient())
{
var response = await client.GetAsync(imageUrl);
response.EnsureSuccessStatusCode();
var imageBytes = await response.Content.ReadAsByteArrayAsync();
await File.WriteAllBytesAsync(localPath, imageBytes);
Console.WriteLine(“下载成功,保存在:” + localPath);
}
Process.Start(new ProcessStartInfo(localPath) { UseShellExecute = true });
}
分别用DALL·E 2,3生成图例效果如下,优劣自行判断:

图片

(DALL·E 2生成图例一)

图片

(DALL·E 2生成图例二)

(DALL·E 2生成图例三)

接下来把上面代码第10行修改成DALL·E 3,来看一下效果:
.AddOpenAITextToImage(key,modelId: “dall-e-3)

(DALL·E 3生成图例一)

(DALL·E 3生成图例二)

(DALL·E 3生成图例三)

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/420111.html

联系我们
联系我们
分享本页
返回顶部