Stability.ai é uma organização bem estabelecida em inteligência artificial, conhecida por seus modelos que geram imagens e texto a partir de descrições. Abaixo está um resumo dos principais modelos que eles desenvolveram, apresentados em ordem cronológica de liberação:
Modelos de geração de imagens:
Stable Diffusion (agosto de 2022) O primeiro modelo de difusão latente, capaz de gerar imagens com base em descrições textuais.
Stable Diffusion 2.0 (novembro de 2022) Uma versão atualizada com qualidade de imagem aprimorada, suporte para resoluções mais altas e recursos adicionais.
Stable Diffusion XL (SDXL) (abril de 2023) focada no fotorrealismo, esta versão introduziu melhorias na composição da imagem e na geração de rosto.
Stable Diffusion 3.0 (fevereiro de 2024), com uma nova arquitetura que combina transformadores de difusão e correspondência de fluxo, esta versão aprimora o desempenho para consultas com vários sujeitos e a qualidade geral da imagem.
Stable Cascade (fevereiro de 2024) construída sobre a arquitetura Würstchen, este modelo melhora a precisão e a eficiência na geração de texto para imagem.
Stable Diffusion 3.5 (outubro de 2024) inclui variantes como difusão estável 3.5 Médio grande e 3,5, oferecendo mais opções para diversas tarefas de geração com eficiência otimizada.
Importante
Esta é uma biblioteca não oficial. Estabilidade.ai não fornece nenhuma biblioteca oficial para Delphi . Este repositório contém a implementação Delphi sobre a estabilidade.ai API pública.
Você pode acessar o console de estabilidade.ai para explorar as possibilidades disponíveis.
Para obter uma chave da API, você precisa criar uma conta. Um crédito de 25 será concedido a você e uma chave inicial será gerada automaticamente. Você pode encontrar essa chave aqui.
Depois de ter um token, você pode inicializar a interface IStabilityAI , que é um ponto de entrada para a API.
Observação
uses StabilityAI;
var Stability := TStabilityAIFactory.CreateInstance(API_KEY);Aviso
Para usar os exemplos fornecidos neste tutorial, especialmente para trabalhar com métodos assíncronos, recomendo definir a interface de estabilidade com o escopo mais amplo possível.
Portanto, defina Stability := TStabilityAIFactory.CreateInstance(API_KEY); No evento OnCreate do seu aplicativo.
Onde Stability: IStabilityAI;
No contexto de métodos assíncronos, para um método que não envolve streaming, os retornos de chamada usam o seguinte registro genérico: TAsynCallBack<T> = record definido na unidade StabilityAI.Async.Support.pas . Este registro expõe as seguintes propriedades:
TAsynCallBack<T> = record
...
Sender: TObject;
OnStart: TProc<TObject>;
OnSuccess: TProc<TObject, T>;
OnError: TProc<TObject, string>; O nome de cada propriedade é auto-explicativo; Se necessário, consulte a documentação interna para obter mais detalhes.
Observação
No restante do tutorial, usaremos principalmente métodos anônimos, a menos que especificado de outra forma, pois o trabalho com APIs exige devido a tempos de processamento que às vezes podem ser bastante longos.
Imagem estável Ultra Use o modelo Diffusion 3.5. Este método é distinguido por:
Exemplo de código assíncrono
// uses StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate;
Stability.StableImage.Generate.ImageUltra(
procedure (Params: TStableImageUltra)
begin
Params.AspectRatio(ratio16x9);
Params.Prompt( ' Lighthouse on a cliff overlooking the ocean ' );
// A blurb of text describing what you do not wish to see in the output image.
// Params.NegativePrompt('...')
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
// Add a TImage on the form
// Add a TMemo on the form
Result.Sender := Image1;
Result.OnStart :=
procedure (Sender: TObject)
begin
Memo1.Lines.Text := Memo1.Text + ' The generation has started. Please wait... ' + sLineBreak;
end ;
Result.OnSuccess :=
procedure (Sender: TObject; Image: TStableImage)
begin
var Stream := Image.GetStream;
try
Image.SaveToFile( ' lighthouse.png ' );
// for VCL
Image1.Picture.LoadFromStream(Stream);
// for FMX
// Image1.Bitmap.LoadFromStream(Stream);
Memo1.Lines.Text := Memo1.Text + ' Generation ended successfully ' + sLineBreak;
finally
Stream.Free;
end ;
end ;
Result.OnError :=
procedure (Sender: TObject; Error: String)
begin
Memo1.Lines.Text := Memo1.Text + Error + sLineBreak;
end ;
end );Configurações detalhadas na documentação oficial
Para simplificar os códigos de exemplo fornecidos neste tutorial, incluí duas unidades no código -fonte: VCL.Stability.Tutorial e FMX.Stability.Tutorial . Dependendo da opção que você optar por testar o código -fonte fornecido, você precisará instanciar a classe TVCLStabilitySender ou TFMXStabilitySender no evento OnCreate do aplicativo, como segue:
Dica
// uses VCL.Stability.Tutorial;
StabilityResult := TVCLStabilitySender.Create(Memo1, Image1);ou
// uses FMX.Stability.Tutorial;
StabilityResult := TFMXStabilitySender.Create(Memo1, Image1); Certifique -se de adicionar um TMemo e um componente TImage ao seu formulário com antecedência.
Também é possível fornecer uma imagem de referência a ser usada como ponto de partida para a geração. Nesse caso, o parâmetro strength deve ser especificado, pois determina a influência da imagem de entrada na saída final. Um valor strength de 0 produzirá uma imagem idêntica à entrada, enquanto um valor 1 indica nenhuma influência da imagem inicial.
// uses StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate, FMX.Stability.Tutorial;
StabilityResult.FileName := ' lighthouse1.png ' ;
Stability.StableImage.Generate.ImageUltra(
procedure (Params: TStableImageUltra)
begin
Params.AspectRatio(ratio16x9);
Params.Prompt( ' There are many birds in the sky ' );
Params.Image( ' lighthouse.png ' );
Params.Strength( 0.3 );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Especificidade:
Stable Image Core é um serviço de geração de texto para imagem projetado para fornecer qualidade premium com velocidade. Ao contrário de outras ferramentas semelhantes, não requer experiência em "engenharia imediata". Os usuários simplesmente descrevem um estilo, cena ou personagem, e a ferramenta gera uma imagem que se alinha com sua descrição.Pontos -chave:
Inventário de Aplicativos:
Exemplo de código assíncrono
// uses StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate, FMX.Stability.Tutorial;
StabilityResult.FileName := ' lighthouse2.png ' ;
Stability.StableImage.Generate.ImageCore(
procedure (Params: TStableImageCore)
begin
Params.AspectRatio(ratio16x9);
Params.Prompt( ' Lighthouse on a cliff overlooking the ocean ' );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
Você pode orientar o modelo de imagem em direção a um estilo específico selecionando de 17 estilos disponíveis.
// uses StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate, FMX.Stability.Tutorial;
StabilityResult.FileName := ' lighthouse3.png ' ;
Stability.StableImage.Generate.ImageCore(
procedure (Params: TStableImageCore)
begin
Params.AspectRatio(ratio16x9);
Params.Prompt( ' Lighthouse on a cliff overlooking the ocean ' );
Params.StylePreset(TStylePreset.digitalArt);
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Inventário de modelos disponíveis
Difusão estável 3.5
Difusão estável 3.0 (fogos de artifício ai)
Pontos -chave:
Turbo geram imagens mais rapidamente sem sacrificar a qualidade. Este modo cria uma imagem baseada apenas em uma descrição textual. O prompt é a única entrada obrigatória, mas um parâmetro opcional aspect_ratio está disponível para ajustar as dimensões da imagem resultante.
Exemplo de código assíncrono
// uses StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate, FMX.Stability.Tutorial;
StabilityResult.FileName := ' lighthouse4.png ' ;
Stability.StableImage.Generate.Diffusion(
procedure (Params: TStableImageDiffusion)
begin
Params.AspectRatio(ratio16x9);
Params.Prompt( ' Lighthouse on a cliff overlooking the ocean ' );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
Este método gera uma imagem baseada na entrada de texto ao usar uma imagem existente como referência inicial. Os parâmetros necessários incluem:
prompt : o texto descritivo que orienta a geração de imagens.image : A imagem inicial que serve como base para a saída.strength : determina o grau em que a imagem inicial influencia o resultado final.mode : deve ser definido como "imagem a imagem".Exemplo de código assíncrono
// uses StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate, FMX.Stability.Tutorial;
StabilityResult.FileName := ' lighthouse5.png ' ;
Stability.StableImage.Generate.Diffusion(
procedure (Params: TStableImageDiffusion)
begin
Params.Prompt( ' There are many birds in the sky ' );
Params.Mode(imageToImage);
Params.Image( ' lighthouse4.png ' );
Params.Strength( 0.6 );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Observação
Nota: O tamanho máximo da solicitação é 10mib.
Ambos os modos permitem o uso desses parâmetros opcionais:
model : Especifica o modelo a ser utilizado, como SD3 , SD3 Grande Turbo ou meio SD3 .output_format : determina o formato desejado da imagem resultante.seed : define a semente de aleatoriedade para o processo de geração.negative_prompt : define palavras -chave a serem excluídas da imagem gerada.cfg_scale : ajusta o nível de adesão ao texto rápido durante o processo de difusão. Usando SDXL 1.0: Use stable-diffusion-xl-1024-v1-0 como o engine_id para sua solicitação e especifique as dimensões ( height e width ) com uma das seguintes combinações:
O uso de SD 1.6 : SD 1.6 é um modelo base de resolução flexível projetada para gerar imagens com proporções de aspecto não padrão. O modelo é otimizado para uma resolução de 512 x 512 pixels. Para criar saídas com uma resolução de 1 megapixel, recomendamos o uso do SDXL 1.0, disponível pelo mesmo preço.
Para usar este modelo, defina stable-diffusion-v1-6 como o engine_id em sua solicitação e verifique se a height e width atendem aos seguintes requisitos:
Exemplo de código assíncrono
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate,
// StabilityAI.Version1.SDXL1AndSD1_6, FMX.Stability.Tutorial;
StabilityResult.FileName := ' lighthouse6.png ' ;
Stability.Version1.SDXLAndSDL.TextToImage( ' stable-diffusion-xl-1024-v1-0 ' ,
procedure (Params: TPayload)
begin
Params.TextPrompts([TPrompt.New( 1 , ' A lighthouse on a cliff ' ) ]);
Params.CfgScale( 7 );
Params.Height( 1216 );
Params.Width( 832 );
Params.Sampler(TSamplerType.K_DPMPP_2S_ANCESTRAL);
Params.Samples( 1 );
Params.Steps( 30 );
end ,
function : TAsynArtifacts
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
Ajustando o grau de transformação
init_image_mode=IMAGE_STRENGTH com image_strength=0.35 ou use init_image_mode=STEP_SCHEDULE com step_schedule_start=0.65 . Ambos os métodos produzem resultados semelhantes, mas o modo step_schedule oferece flexibilidade adicional, permitindo que você especifique um valor step_schedule_end , fornecendo um controle mais sutil, se necessário. Para mais detalhes, consulte as descrições específicas de parâmetros abaixo.Exemplo de código assíncrono
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, StabilityAI.StableImage.Generate,
// StabilityAI.Version1.SDXL1AndSD1_6, FMX.Stability.Tutorial;
StabilityResult.FileName := ' lighthouse7.png ' ;
Stability.Version1.SDXLAndSDL.ImageToImageWithPrompt( ' stable-diffusion-v1-6 ' ,
procedure (Params: TPayloadPrompt)
begin
Params.TextPrompts([TPromptMultipart.New( 1 , ' A dog space commander ' ) ]);
Params.InitImage( ' lighthouse6.png ' );
Params.ImageStrength( 0.45 );
Params.CfgScale( 7 );
Params.Sampler(TSamplerType.K_DPMPP_2S_ANCESTRAL);
Params.Samples( 3 );
Params.Steps( 30 );
end ,
function : TAsynArtifacts
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Dica
Em nosso exemplo de código, o valor do parâmetro de amostras é 3, o que significa que três imagens foram geradas. Apenas o primeiro é exibido. Os outros dois foram salvos com nomes de arquivos indexados da seguinte forma: Lighthouse701.png e Lighthouse702.png.
Configurações detalhadas na documentação oficial
Modifique partes específicas de uma imagem usando uma máscara. A máscara deve corresponder às dimensões e forma da imagem original. Essa funcionalidade também suporta imagens com canais alfa.
Use o Métode:
ImageToImageWithMask( const Model: string; ParamProc: TProc<TPayloadMask>;
CallBacks: TFunc<TAsynArtifacts>);Ferramentas para aprimorar o tamanho e a resolução de suas imagens
Upscaler conservador
Upscaler criativo
Upscaler rápido
Aceita imagens que variam em tamanho de 64x64 pixels até 1 megapixel e aumenta sua resolução para 4K. De maneira mais ampla, ele pode aumentar as imagens em aproximadamente 20 a 40 vezes, mantendo seus detalhes originais. A opção de luxo conservador se concentra na preservação da integridade da imagem com modificações mínimas e não se destina a reinterpretar o conteúdo da imagem.
Exemplo de código assíncrono
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Upscale;
StabilityResult.FileName := ' Upscalelighthouse1.png ' ;
Stability.StableImage.Upscale.Conservative(
procedure (Params: TUpscaleConservative)
begin
Params.Image( ' lighthouse.png ' );
Params.Prompt( ' The light house ' );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
Aceita imagens que variam de 64x64 pixels a um máximo de 1 megapixel, aumentando sua resolução até 4K. De maneira mais ampla, ele pode aumentar as imagens em aproximadamente 20 a 40 vezes, mantendo - e muitas vezes melhorando - sua qualidade. O recurso de luxo criativo é particularmente eficaz para imagens fortemente degradadas, mas não é adequado para fotos maiores que 1 megapixel, pois aplica reinterpretação significativa (ajustável através da escala de criatividade).
Aviso
Essa função é rotulada como assíncrona pelo editor, mas, na realidade, não se comporta como tal para um aplicativo de terceiros que o utiliza. Opera mais como um mecanismo de cache para um processamento um pouco atrasado.
Exemplo de código assíncrono
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Upscale;
Stability.StableImage.Upscale.Creative(
procedure (Params: TUpscaleCreative)
begin
Params.Image( ' lighthouse.png ' );
Params.Prompt( ' The gray light house ' );
Params.OutputFormat(png);
end ,
function : TAsynResults
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
Recuperamos o ID do trabalho e, na próxima etapa, precisamos carregar a imagem, a menos que o status recuperado esteja "em andamento". Nesse caso, a operação deve ser julgada.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Results,
// e.g. Id ---> ea771536f066b7fd03d62384581982ecd8b54a932a6378d5809d43f6e5aa789a
StabilityResult.FileName := ' Upscalelighthouse2.png ' ;
Stability.StableImage.Results.Fetch(StabilityResult.Id,
function : TAsynResults
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
A resolução de imagem Fast UpScaler ServiceIncrease em 400%. Projetado para velocidade e eficiência, ele processa imagens em aproximadamente um segundo, tornando -o uma excelente ferramenta para melhorar a clareza de visuais comprimidos, perfeitos para postagens de mídia social e vários outros usos.
Exemplo de código assíncrono
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Upscale;
StabilityResult.FileName := ' Upscalelighthouse3.png ' ;
Stability.StableImage.Upscale.Fast(
procedure (Params: TUpscaleFast)
begin
Params.Image( ' lighthouse.png ' );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
Inventário de recursos
O serviço de apagamento foi projetado para eliminar elementos indesejados de imagens, como imperfeições em faces ou objetos nas superfícies, usando técnicas de mascaramento.
Masks podem ser fornecidas em um dos dois métodos:
mask .Exemplo de código assíncrono
Observação
mask específica for fornecida, uma máscara será gerada automaticamente com base no canal alfa da imagem. As áreas transparentes estarão sujeitas a pintura, enquanto as regiões opacas permanecerão inalteradas.mask , a mask substituirá o canal alfa. // uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Edit;
StabilityResult.FileName := ' EraseLighthouse.png ' ;
Stability.StableImage.Edit.Erase(
procedure (Params: TErase)
begin
Params.Image( ' Lighthouse.png ' );
Params.OutputFormat(png);
end ,
function: TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Quando uma máscara é fornecida:
Observação
mask diferirem das do parâmetro de imagem, ela será ajustada automaticamente para corresponder ao tamanho da imagem. Stability.StableImage.Edit.Erase(
procedure (Params: TErase)
begin
Params.Image( ' Lighthouse.png ' );
Params.Mask( ' MyMask01.png ' );
Params.GrowMask( 6 );
Params.OutputFormat(png);
end ,
...Configurações detalhadas na documentação oficial
Modifique as imagens de forma inteligente, adicionando ou substituindo seções específicas por novo conteúdo, guiado por uma imagem mask .
Esta mask pode ser fornecida de duas maneiras:
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Edit;
StabilityResult.FileName := ' InpaintLighthouse.png ' ;
Stability.StableImage.Edit.Inpaint(
procedure (Params: TInpaint)
begin
Params.Image( ' Lighthouse.png ' );
Params.Mask( ' Mask01.png ' );
Params.Prompt( ' The lighthouse is bigger ' );
Params.OutputFormat(png);
end ,
function: TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end ); O uso da mask é idêntico ao descrito com a API apagada.
Configurações detalhadas na documentação oficial
O serviço ultrapassado permite a extensão perfeita de uma imagem adicionando conteúdo em qualquer direção para preencher o espaço circundante. Ao contrário de outros métodos, automatizados ou manuais, este serviço foi projetado para reduzir artefatos visíveis e evitar indicações visíveis de edição de imagens.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Edit;
StabilityResult.FileName := ' OutpaintLighthouse.png ' ;
Stability.StableImage.Edit.Outpaint(
procedure (Params: TOutpaint)
begin
Params.Image( ' Lighthouse.png ' );
Params.Right( 200 );
Params.Down( 400 );
Params.OutputFormat(png);
end ,
function: TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
O serviço de pesquisa e substituição oferece uma forma especializada de pintura que elimina a necessidade de uma máscara. Em vez disso, os usuários podem especificar um objeto a ser substituído, descrevendo -o em linguagem simples usando um search_prompt. O serviço detectará e segmentará automaticamente o objeto especificado, substituindo -o perfeitamente pelo descrito no prompt.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Edit;
StabilityResult.FileName := ' SearchReplaceLighthouse.png ' ;
Stability.StableImage.Edit.SearchAndReplace(
procedure (Params: TSearchAndReplace)
begin
Params.Image( ' Lighthouse.png ' );
Params.Prompt( ' Replace the lighthouse ' );
Params.SearchPrompt( ' Lighthouse ' );
Params.OutputFormat(png);
end ,
function: TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
Ao utilizar o serviço de pesquisa e recolor, você pode alterar a cor de um objeto específico em uma imagem por meio de um prompt simples. Essa forma especializada de incorreção não requer uma máscara. Em vez disso, o serviço segmenta automaticamente o objeto e aplica as novas cores, conforme especificado em seu prompt.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Edit;
StabilityResult.FileName := ' SearchRecolorLighthouse.png ' ;
Stability.StableImage.Edit.SearchAndRecolor(
procedure (Params: TSearchAndRecolor)
begin
Params.Image( ' Lighthouse.png ' );
Params.Prompt( ' The lighthouse is pink ' );
Params.SelectPrompt( ' Lighthouse ' );
Params.OutputFormat(png);
end ,
function: TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
O serviço Remow Background Identifica e isola com precisão o primeiro plano em uma imagem, permitindo que o plano de fundo seja removido ou substituído conforme necessário.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Edit;
StabilityResult.FileName := ' RemoveBackgroundLighthouse.png ' ;
Stability.StableImage.Edit.RemoveBackground(
procedure (Params: TRemoveBackground)
begin
Params.Image( ' Lighthouse.png ' );
Params.OutputFormat(png);
end ,
function: TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
O serviço de edição de fundo e relembro de substituição permite alterar sem esforço os antecedentes usando imagens geradas pela IA ou seus próprios uploads, enquanto ajustam perfeitamente a iluminação para complementar o assunto. Esta API oferece uma solução eficiente de edição de imagens adaptada para várias indústrias, incluindo comércio eletrônico, imóveis, fotografia e empreendimentos criativos.
Os principais recursos incluem:
Aviso
Essa função é rotulada como assíncrona pelo editor, mas, na realidade, não se comporta como tal para um aplicativo de terceiros que o utiliza. Opera mais como um mecanismo de cache para um processamento um pouco atrasado.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Edit;
Stability.StableImage.Edit.ReplaceBackgroundAndRelight(
procedure (Params: TReplaceBackgroundAndRelight)
begin
Params.SubjectImage( ' Lighthouse.png ' );
Params.BackgroundPrompt( ' cinematic lighting ' );
Params.OutputFormat(png);
end ,
function: TAsynResults
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );A API retorna o ID da tarefa em andamento, assim como a API criativa de luxo. Você precisa usar a API busca, como mencionado anteriormente.
Configurações detalhadas na documentação oficial
Ferramentas para criar variações controladas de imagens e esboços
Esta ferramenta foi projetada para fluxos de trabalho de desenvolvimento envolvendo design e brainstorming iterativos. Ele transforma esboços desenhados à mão em visuais polidos com ajustes precisos. Além disso, permite o controle de ajuste fino sobre a aparência final de imagens não-esquisitos, utilizando os contornos e bordas da imagem.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Control;
StabilityResult.FileName := ' Control01.png ' ;
Stability.StableImage.Control.Sketch(
procedure (Params: TSketch)
begin
Params.Image( ' lighthouse.png ' );
Params.ControlStrength( 0.7 );
Params.Prompt( ' a medieval castle on a hill ' );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
Este serviço foi projetado para gerar imagens, preservando a estrutura de uma imagem de entrada, tornando -a particularmente útil para tarefas como replicar cenas ou renderizar caracteres com base em modelos predefinidos.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Control;
StabilityResult.FileName := ' Control02.png ' ;
Stability.StableImage.Control.Structure(
procedure (Params: TStructure)
begin
Params.Image( ' lighthouse.png ' );
Params.ControlStrength( 0.7 );
Params.Prompt( ' a well manicured shrub in an english garden ' );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
Essa ferramenta analisa os recursos estilísticos de uma determinada imagem de entrada (imagem de controle) e os aplica para gerar uma nova imagem guiada por um prompt especificado. A imagem de saída mantém o estilo visual da imagem de controle enquanto incorpora o conteúdo solicitado.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.StableImage.Control;
StabilityResult.FileName := ' Control03.png ' ;
Stability.StableImage.Control.Style(
procedure (Params: TStyle)
begin
Params.Image( ' lighthouse.png ' );
Params.Prompt( ' a majestic portrait of a chicken ' );
Params.Fidelity( 0.7 );
Params.OutputFormat(png);
end ,
function : TAsynStableImage
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
Ferramentas para obter os resultados de suas gerações assíncronas.
Para usar, consulte o resultado da geração assíncrona busca
O estável Fast 3D gera ativos 3D de alta qualidade a partir de uma única imagem de entrada 2D.
Consulte a especificação do formato de arquivo GLB para obter mais detalhes.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.VideoAnd3D.Stable3D;
StabilityResult.FileName := ' My_Result.gltf ' ;
Stability.VideoAnd3D.Model3D.Fast3D(
procedure (Params: TStable3D)
begin
Params.Image( ' My_ImageTo3D.png ' );
Params.ForegroundRatio( 0.85 );
end ,
function : TAsynModel3D
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
Use difusão de vídeo estável , um modelo de difusão de vídeo latente, para gerar um pequeno vídeo a partir de uma imagem inicial.
ID da resposta para verificar os resultados no ponto de extremidade da image-to-video/result/{id} . Certifique-se de não pesquisar esse terminal mais de uma vez a cada 10 segundos para evitar erros ou problemas com limitação de taxa. // uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.VideoAnd3D.Video;
Stability.VideoAnd3D.ImageToVideo.Generation(
procedure (Params: TVideo)
begin
Params.Image( ' lighthouse1024x576.png ' );
end ,
function : TAsynJobVideo
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );No final, recuperamos o ID ( por exemplo, d4fb4aa8301aee0b368a41b3c0a78018dfc28f1f959a3666be2e6951408fb8e3 ) da tarefa de criação de vídeo. Em seguida, simplesmente recuperamos o resultado dessa maneira.
Configurações detalhadas na documentação oficial
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.VideoAnd3D.Video;
var Id := ' d4fb4aa8301aee0b368a41b3c0a78018dfc28f1f959a3666be2e6951408fb8e3 ' ;
StabilityResult.FileName := ' lighthouse1024x576.mp4 ' ;
Stability.VideoAnd3D.ImageToVideo.Fetch(Id,
function : TAsynResults
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
Liste os mecanismos compatíveis com os terminais da API REST Version 1 .
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.Version1.Engines;
Stability.Version1.Engines.List(
function : TAsynEngines
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
Recupere detalhes sobre a conta vinculada à chave da API especificada
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.Version1.User;
Stability.Version1.User.AccountDetails(
function : TAsynAccountDetails
begin
Result.Sender := StabilityResult;
Result.OnStart := Start;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Configurações detalhadas na documentação oficial
Recupere o saldo de crédito para a conta ou organização vinculada à chave da API fornecida.
// uses
// StabilityAI, StabilityAI.Types, StabilityAI.Common, FMX.Stability.Tutorial,
// StabilityAI.Version1.User;
var Balance := Stability.Version1.User.AccountBalance;
try
Memo1.Lines.Text := Memo1.Text + Balance.Credits.ToString + sLineBreak;
finally
Balance.Free;
end ;Configurações detalhadas na documentação oficial
A Stability.ai anunciou dois próximos recursos:
Stable LLM 12B e Stable LLM 1.6B .Audio Stable 2.0 . Você pode entrar em contato com a estabilidade.ai para testar este modelo enviando uma mensagem.Solicitações de tração são bem -vindas. Se você planeja fazer uma grande mudança, abra um problema primeiro para discutir suas alterações propostas.
Este projeto está licenciado sob a licença do MIT.