using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
using System.Windows.Media.Imaging;
namespace gNcImgMover
{
public class Utils
{
public static byte[] ConvertBitmapSourceToByteArray( BitmapEncoder encoder, ImageSource imageSource )
{
byte[] bytes = null;
var bitmapSource = imageSource as BitmapSource;
if ( bitmapSource != null )
{
encoder.Frames.Add( BitmapFrame.Create( bitmapSource ) );
using ( var stream = new MemoryStream() )
{
encoder.Save( stream );
bytes = stream.ToArray();
}
}
return bytes;
}
public static byte[] ConvertBitmapSourceToByteArray( BitmapSource image )
{
byte[] data;
BitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add( BitmapFrame.Create( image ) );
using ( MemoryStream ms = new MemoryStream() )
{
encoder.Save( ms );
data = ms.ToArray();
}
return data;
}
public static byte[] ConvertBitmapSourceToByteArray( ImageSource imageSource )
{
var image = imageSource as BitmapSource;
byte[] data;
BitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add( BitmapFrame.Create( image ) );
using ( MemoryStream ms = new MemoryStream() )
{
encoder.Save( ms );
data = ms.ToArray();
}
return data;
}
public static byte[] ConvertBitmapSourceToByteArray( Uri uri )
{
var image = new BitmapImage( uri );
byte[] data;
BitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add( BitmapFrame.Create( image ) );
using ( MemoryStream ms = new MemoryStream() )
{
encoder.Save( ms );
data = ms.ToArray();
}
return data;
}
public static byte[] ConvertBitmapSourceToByteArray( string filepath )
{
var image = new BitmapImage( new Uri( filepath ) );
byte[] data;
BitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add( BitmapFrame.Create( image ) );
using ( MemoryStream ms = new MemoryStream() )
{
encoder.Save( ms );
data = ms.ToArray();
}
return data;
}
public static BitmapImage ConvertByteArrayToBitmapImage( Byte[] bytes )
{
var stream = new MemoryStream( bytes );
stream.Seek( 0, SeekOrigin.Begin );
var image = new BitmapImage();
image.BeginInit();
image.StreamSource = stream;
image.EndInit();
return image;
}
}
}
private void ShowImage( string selectedFileName )
{
/*
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri( selectedFileName );
bitmap.EndInit();
ImageViewer1.Source = bitmap;
*/
var data = Utils.ConvertBitmapSourceToByteArray( selectedFileName );
ImageViewer1.Source = Utils.ConvertByteArrayToBitmapImage( data );
}
Reference URL : https://stackoverflow.com/questions/9564174/convert-byte-array-to-image-in-wpf
'C#(CSharp) > WPF' 카테고리의 다른 글
Layout two controls on a line in a stretchable WPF window (0) | 2018.02.19 |
---|---|
UI mvvm databinding dispatcher (0) | 2018.02.13 |
using cefSharp in WPF (0) | 2018.02.13 |
ObservableCollection 바인딩(Binding) (0) | 2015.04.08 |
결합 속성(?) Attached Property (0) | 2015.04.08 |