我正在开发一个 WP7 应用程序,我想在其中录制视频并在保存视频之前拍摄视频快照,以便将其用作缩略图。缩略图在使用前临时保存在隔离存储中。对于相机,我使用矩形来录制视频,然后我想在手机上显示图片。问题是图片只显示黑屏。即使我尝试将图片保存在媒体库中,图片也显示为黑色。这个问题的原因可能是什么,我该如何解决?
我插入了下面的代码:
这是您用来捕捉视频的矩形。
<Rectangle
x:Name="viewfinderRectangle"
Width="640"
Height="480"
HorizontalAlignment="Left"
Canvas.Left="80"/>
这是拍照的代码:
try
{
String tempJPEG = FOSConstants.TEMP_VIDEO_THUMBNAIL_NAME;
var myStore = IsolatedStorageFile.GetUserStoreForApplication();
if (myStore.FileExists(tempJPEG))
{
myStore.DeleteFile(tempJPEG);
}
IsolatedStorageFileStream myFileStream = myStore.CreateFile(tempJPEG);
WriteableBitmap wb = new WriteableBitmap(viewfinderRectangle, null);
wb.SaveJpeg(myFileStream, wb.PixelWidth, wb.PixelHeight, 0, 85);
myFileStream.Close();
myFileStream.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error saving snapshot", MessageBoxButton.OK);
}
下面是从隔离存储中读取缩略图的代码:
private BitmapImage GetIsolatedStorageFile(string isolatedStorageFileName)
{
var bimg = new BitmapImage();
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
using (var stream = store.OpenFile(isolatedStorageFileName, FileMode.Open, FileAccess.Read))
{
bimg.SetSource(stream);
}
}
return bimg;
}
这是我想在 GUI 中显示缩略图的图像。
<Image Width="180"
Height="180"
Stretch="Fill"
Margin="24,0,0,0"
Source="{Binding Path=ImageSoruce, Mode=TwoWay}"
HorizontalAlignment="Left"/>