Skip to content

Commit 6af4b25

Browse files
committed
Improve gif logic
1 parent 4ccfcdd commit 6af4b25

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

src/Automation/Responders/StableDiffusionResponder.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,9 @@ public async Task<MemoryStream> GenerateImage(string prompt, CancellationToken t
131131

132132
var filename = response.RequestMessage.RequestUri.PathAndQuery.Split("/images/")[1];
133133

134+
var pngBytes = await response.Content.ReadAsByteArrayAsync(token);
135+
var pngStream = new MemoryStream(pngBytes);
136+
134137
var frameBytes = new List<byte[]>(capacity: requestPayload.steps);
135138
for (int step = 0; step < requestPayload.steps; step++)
136139
{
@@ -140,6 +143,9 @@ public async Task<MemoryStream> GenerateImage(string prompt, CancellationToken t
140143
}
141144

142145
using var first = SixLabors.ImageSharp.Image.Load<Rgba32>(frameBytes[0]);
146+
147+
first.Metadata.GetGifMetadata().RepeatCount = 0;
148+
143149
for (int i = 1; i < frameBytes.Count; i++)
144150
{
145151
using var img = SixLabors.ImageSharp.Image.Load<Rgba32>(frameBytes[i]);
@@ -149,7 +155,7 @@ public async Task<MemoryStream> GenerateImage(string prompt, CancellationToken t
149155
foreach (var frame in first.Frames)
150156
{
151157
var meta = frame.Metadata.GetGifMetadata();
152-
meta.FrameDelay = 6;
158+
meta.FrameDelay = 25;
153159
meta.DisposalMethod = GifDisposalMethod.RestoreToBackground;
154160
}
155161

@@ -161,9 +167,6 @@ public async Task<MemoryStream> GenerateImage(string prompt, CancellationToken t
161167
}, token);
162168
gifStream.Position = 0;
163169

164-
var pngBytes = await response.Content.ReadAsByteArrayAsync(token);
165-
var pngStream = new MemoryStream(pngBytes);
166-
167170
return (gifStream, pngStream);
168171
}
169172
}

0 commit comments

Comments
 (0)