[Silverlight] 如何開啟視訊後擷取影像並存檔

2010/11/18

繼上一篇 [Silverlight] 如何開啟視訊後擷取影像
看來Silverlight 之視訊三部曲要接近尾聲了…
最後的目的就是要存檔…

我在這篇 做完物件快照(snapshot)後,將圖片存檔 寫過如何存檔..
今天換另一種寫法來寫成JPG 檔案
延續上一篇
sshot-158



sshot-161

多了一個 btnSave 可以將 imgShot 的圖儲存起來…

這一次我們要用 IMAGETOOLS 這 library
首先下載後解開壓縮..

必須在專案中 先include
SL4\ImageTools.dll
SL4\ImageTools.IO.Jpeg.dll
SL4\ImageTools.Utils.dll

sshot-162


使得專案的reference 長這付德性..
sshot-163

其中還有 png,gif,bmp 當然 這範例我是用jpg …
方法差不多可自行選擇編碼方式..

記得要using


using ImageTools;
using ImageTools.IO.Jpeg;

接下來我們來看 btnSave  的 Click 事件..


private void btnSave_Click(object sender, RoutedEventArgs e)
{
    var dlg = new SaveFileDialog();
    dlg.DefaultExt = ".jpg";
    dlg.Filter = "JPG File|*.jpg";
    
    if(dlg.ShowDialog() == true)
    {
        Stream stream = dlg.OpenFile();
        var jpgEncoder = new JpegEncoder();
        jpgEncoder.Encode(imgShot.ToImage(), stream);

        //這一行很重要如果沒有下這一行
        //必須要等到Silverlight 把這一個檔案給釋放才可以被其他軟體給開啟
        stream.Close();
       
    }


 
}

其中有一個小訣竅就是

stream.Close() 一定要下如果不下..檔案會被鎖住…
直到程式生命週期結束,他回收後才會被釋放…
這點是比較要注意的..


讚一下:


預覽:


下載:


0 意見:

程式 . 生活 . D小調.@2010 | Binary Design: One Winged Angel.