Semantic Kernel:文转图

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

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

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net9.0</TargetFramework>
    <RootNamespace>Demo07_TextToPicture</RootNamespace>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>


  <ItemGroup>
    <PackageReference Include="Microsoft.SemanticKernel" Version="1.18.0-rc" />
  </ItemGroup>
</Project>

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

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:\GPT\key.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生成图例效果如下,优劣自行判断:

ea03294a0069bf09f656dfd123b16cf9.png

(DALL·E 2生成图例一)

fd01f060c1cfa00cf06c682f50621902.png

(DALL·E 2生成图例二)

2c497e52672790257127334e88b8cc93.png

(DALL·E 2生成图例三)

接下来把上面代码第10行修改成DALL·E 3,来看一下效果:

.AddOpenAITextToImage(key,modelId: "dall-e-3)

1c912b35f2623df24b4da0269a44c0c5.png

(DALL·E 3生成图例一)

778ff72e306fa66e9c36b2a6531154d8.png

(DALL·E 3生成图例二)

4b986ebb8916417a542130e2bdee6bf0.png

(DALL·E 3生成图例三)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值