■ BmpBitmapEncoder 클래스를 사용해 BMP 파일을 생성하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
using System.Collections.Generic; using System.IO; using System.Windows.Media; using System.Windows.Media.Imaging; int width = 128; int height = width; int stride = width / 8; byte[] pixelByteArray = new byte[height * stride]; List<Color> colorList = new List<Color> { Colors.Red, Colors.Blue, Colors.Green }; BitmapPalette bitmapPalette = new BitmapPalette(colorList); BitmapSource bitmapSource1 = BitmapSource.Create ( width, height, 96, 96, PixelFormats.Indexed1, bitmapPalette, pixelByteArray, stride ); FileStream stream = new FileStream("target.bmp", FileMode.Create); BmpBitmapEncoder encoder = new BmpBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(bitmapSource1)); encoder.Save(stream); |
■ BmpBitmapDecoder 클래스를 사용해 BMP 이미지 파일을 로드하는 방법을 보여준다. ▶ MainWindow.xaml
|
<Window x:Class="TestProject.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="800" Height="600" Title="BmpBitmapDecoder 클래스 : BMP 이미지 파일 로드하기" FontFamily="나눔고딕코딩" FontSize="16"> <Grid> <Image Name="image" Margin="10" Stretch="UniformToFill" /> </Grid> </Window> |
▶ MainWindow.xaml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
using System; using System.Windows; using System.Windows.Media.Imaging; namespace TestProject { /// <summary> /// 메인 윈도우 /// </summary> public partial class MainWindow : Window { //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - MainWindow() /// <summary> /// 생성자 /// </summary> public MainWindow() { InitializeComponent(); Loaded += Window_Loaded; } #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Private #region 윈도우 로드시 처리하기 - Window_Loaded(sender, e) /// <summary> /// 윈도우 로드시 처리하기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="e">이벤트 인자</param> private void Window_Loaded(object sender, RoutedEventArgs e) { Uri uri = new Uri("IMAGE/sample.bmp", UriKind.RelativeOrAbsolute); BmpBitmapDecoder decoder = new BmpBitmapDecoder ( uri, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default ); BitmapSource bitmapSource = decoder.Frames[0]; this.image.Source = bitmapSource; } #endregion } } |
TestProject.zip
■ BmpBitmapDecoder 클래스를 사용해 BMP 이미지 파일을 로드하는 방법을 보여준다. ▶ MainWindow.xaml
|
<Window x:Class="TestProject.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="800" Height="600" Title="BmpBitmapDecoder 클래스 : BMP 이미지 파일 로드하기" FontFamily="나눔고딕코딩" FontSize="16"> <Grid> <Image Name="image" Margin="10" Stretch="UniformToFill" /> </Grid> </Window> |
▶ MainWindow.xaml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
using System.IO; using System.Windows; using System.Windows.Media.Imaging; namespace TestProject { /// <summary> /// 메인 윈도우 /// </summary> public partial class MainWindow : Window { //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - MainWindow() /// <summary> /// 생성자 /// </summary> public MainWindow() { InitializeComponent(); Loaded += Window_Loaded; } #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Private #region 윈도우 로드시 처리하기 - Window_Loaded(sender, e) /// <summary> /// 윈도우 로드시 처리하기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="e">이벤트 인자</param> private void Window_Loaded(object sender, RoutedEventArgs e) { FileStream stream = new FileStream ( "IMAGE/sample.bmp", FileMode.Open, FileAccess.Read, FileShare.Read ); BmpBitmapDecoder decoder = new BmpBitmapDecoder ( stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default ); BitmapSource bitmapSource = decoder.Frames[0]; this.image.Source = bitmapSource; } #endregion } } |
TestProject.zip