![](/img/trans.png)
[英]Is it possible to convert text boxes to a BitmapImage or BitmapFrame?
[英]How to convert BitmapFrame into BitmapImage
我的程序使用一些WPF API來處理文件夾中的圖像。 我需要從圖像中解析EXIF數據(如果有)以便獲取DateTimeOriginal
屬性的值。 我一直在使用BitmapImage
從MemoryStream
加載圖像,但是我需要一個BitmapFrame
對象來獲取BitmapMetadata
對象。
這是在要求獲得DateTimeOriginal
EXIF屬性之前的原始代碼:
BitmapImage src = new BitmapImage();
try {
using ( MemoryStream memoryStream = new MemoryStream( snapshot.ImageData ) ) {
src.BeginInit();
src.CacheOption = BitmapCacheOption.OnLoad;
src.StreamSource = memoryStream;
src.EndInit();
}
} catch ( NotSupportedException ex ) {
. . .
}
現在,要獲取BitmapFrame
,我需要創建一個BitmapDecoder
並使用Frames[0]
屬性。 因此,我在using
語句之后添加了以下內容:
BitmapDecoder decoder = BitmapDecoder.Create( memoryStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad );
這將解碼位圖並獲取第一個Frame,這很酷。 我仍然需要創建BitmapImage
。 我可以通過將MemoryStream's
位置重新設置為開始並保留已經存在的代碼來做到這一點,但這將再次解碼同一張圖像。
有沒有一種方法可以將BitmapFrame
轉換為BitmapImage
? 我以為我可以將BitmapFrame
轉換為BitmapSource
對象,然后設置BitmapImage's Source
Source
屬性,但是BitmapImage
類似乎沒有Source
屬性。
這可能嗎? 如果是這樣,怎么做?
無需進行此轉換。 BitmapImage
MSDN頁面中的“備注”部分顯示:
BitmapImage主要是為了支持可擴展應用程序標記語言(XAML)語法而存在的,並引入了BitmapSource未定義的其他位圖加載屬性。
使用位圖時,您的應用程序通常應始終使用BitmapSource
或ImageSource
基類。 例如,當您分配WPF Image控件的Source
屬性時,可以使用從ImageSource
派生的任何類型的實例,因為這是Source
屬性的類型。
因此,您可以直接使用BitmapFrame
因為它也源自ImageSource
:
var bitmap = BitmapFrame.Create(
memoryStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
image.Source = bitmap;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.