私はビデオを録画したい 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"/>