Я не могу сделать видеофайл из моих изображений, потому что мне нужно сохранить прозрачность файлов PNG.
Я хочу получать 25 кадров в секунду без задержки.
1000+ изображений 1920x1080 от 8 КБ до 5 МБ
Как этого добиться?
Ниже приведены примеры, которые я попробовал:
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 пример: Очень сильно забит ОЗУ из-за большого количества файлов.И тоже чувствуется перетаскивание.
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
Queue
пыталсяиспользовать в качестве буфера картинок.Сначала я загрузил 10 фотографий в Queue
.Показал первую картинку.И как только я показал второе изображение, я удалил первое и добавил одиннадцатое из другого потока в Queue
.
Но у меня сложилось впечатление, что я делаю неправильно, также чувствовал торможение, много раз исправлял код и в итоге случайно удалял.