所以这里是我的计划的概述。您选择包含图像的文件夹。该程序导入所述文件夹中的所有图像(具有.JPG扩展名)。然后,它将这些图像导出到MP4中。对于这个程序,我不需要一个可见的时间轴,只是一种导出所述图像的方法。
我希望能够设置一个通用的持续时间,我希望(如果可能的话)对每个图像都有一个Ken Burns效果,其中图像的缩放比例为5%-10%(这部分不必每次都改变)。截至目前,这是我的代码:
private void btnOpen_Click(object sender, EventArgs e)
{
openFolder.Description = "Open a folder containing pictures for the slideshow!";
if (openFolder.ShowDialog() == DialogResult.OK)
{
var folderPath = openFolder.SelectedPath;
MessageBox.Show(folderPath);
var fileArray = Directory.GetFiles(folderPath, "*.JPG");
float duration = 4;
float startpos = 0;
foreach (var file in fileArray)
{
var filePath = $@"{folderPath}\{file}";
MessageBox.Show(filePath);
//add image to "timeline"
startpos += 4;
}
}
else
{
MessageBox.Show("Next time, select a folder and click open!", "Selection Cancelled", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnExport_Click(object sender, EventArgs e)
{
if (presetList.SelectedIndex == -1)
MessageBox.Show("Please select a preset!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
{
if (presetList.SelectedItem.ToString() == "720p, 30fps")
{
//export code here
}
else if (presetList.SelectedItem.ToString() == "720p, 60fps")
{
//export code here
}
else if (presetList.SelectedItem.ToString() == "1080p, 30fps")
{
//export code here
}
else if (presetList.SelectedItem.ToString() == "1080p, 60fps")
{
//export code here
}
}
}
到目前为止,我已经查看了几个图书馆,但它们似乎都不符合我的需求,而且所有图书馆看起来都非常昂贵。