gpt4 book ai didi

c# - 来自 png 图像的流畅动画(视频)

转载 作者:太空宇宙 更新时间:2023-11-03 16:58:52 27 4
gpt4 key购买 nike

我不能用我的图像制作视频文件,因为我需要保持 png 文件的透明度。

我想立即获得每秒 25 帧。

1000 多张 1920x1080 的图像,从 8 KB 到 5 MB

我怎样才能做到这一点?

以下是我尝试过的示例:

1 个示例:图片因上传图片而被抑制。

int counter = 0;
DispatcherTimer dT = new DispatcherTimer();

public Png()
{
InitializeComponent();

dT.Interval = new TimeSpan(0, 0, 0, 0, 40);
dT.Tick += new EventHandler(dT_Tick);
dT.Start();
}

void dT_Tick(object sender, EventArgs e)
{
var image = new BitmapImage(new Uri("C:\\" + counter + ".png"));
imageBox.Source = image;
counter++;

if (counter == 1000)
{
dT.Stop();
}
}

2 示例:由于大量文件,RAM 非常堵塞。而且,也感到阻力。

    int counter = 0;
DispatcherTimer dT = new DispatcherTimer();
private BitmapImage[] images;

public Png()
{
InitializeComponent();

images = new BitmapImage[1000];

for(int i = 0 ; i < images.Length; i++)
{
images[i] = new BitmapImage(new Uri("C:\\" + i + ".png"));
}

dT.Interval = new TimeSpan(0, 0, 0, 0, 40);
dT.Tick += new EventHandler(dT_Tick);
dT.Start();
}



void dT_Tick(object sender, EventArgs e)
{
imageBox.Source = images[counter];
counter++;

if (counter == 1000)
{
dT.Stop();
}
}

3 例子:

我尝试使用队列

Queue 试图用作图片缓冲区。首先,我将 10 张图片上传到 Queue。显示第一张图片。我一显示第二张图片,就删除了第一张,并将来自另一个线程的第十一张添加到 Queue

但我感觉自己做错了,也感觉刹车了,多次改正代码,最后不小心删掉了。

最佳答案

我将发布对示例 2 的修改,因为我认为它更有效,我也鼓励您使用示例 1 进行试验。

在表单中再添加一个图像框,并确保两个图像框具有相同的位置和大小。

void dT_Tick(object sender, EventArgs e)
{
if (counter % 2 != 0) {
imageBox1.Source = images[counter];
imageBox1.Visible = true;
imageBox2.Visible = false;
}
else {
imageBox2.Source = images[counter];
imageBox2.Visible = true;
imageBox1.Visible = false;
}
counter++;

if (counter == 1000)
{
dT.Stop();
}
}

关于c# - 来自 png 图像的流畅动画(视频),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52888572/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com