WPF中的图像处理简介
2021-03-26 23:28
标签:解码器 hive decode www. save ams 格式转换 enc 解码 和Winform中的GDI+相比,WPF提供了一组新的API用于显示和编辑图像。新API特点如下:
大部分托管的 WPF 图像处理 API 驻留在 System.Windows.Media.Imaging 命名空间中,不过,几个重要的类型(如 ImageBrush 和 ImageDrawing)都驻留在 System.Windows.Media 命名空间,Image 驻留在 System.Windows.Controls 命名空间。
下面我通过一个简单的示例演示一下新的API的使用方法:
图像编码格式转换:
var imageStreamSource = File.OpenRead(@"r:\1\24.bmp"); //在界面上显示图片
var encoder = new
JpegBitmapEncoder(); 这个功能非常简单,就是把一个bmp格式的图片转换为了一个jpg格式的图片。这个示例也显示了WPF的图像处理的基本方式:
图像处理:
常用的图像处理包括缩放、裁切和旋转等,如下是一个将图像旋转90度的例子。
var imageStreamSource = File.OpenRead(@"r:\1\24.bmp"); TransformedBitmap myRotatedBitmapSource = new
TransformedBitmap(); // 旋转90度
//旋转
var rotate = new
RotateTransform(90); image1.Source = rotatedBitMap;
////裁剪 ////缩放 var encoder = new
JpegBitmapEncoder(); 和上面的例子相比,这里就是多了一个TransformedBitmap变换,其实这和xaml中的变换时一样的。
Image Width="150" Margin="5" Grid.Column="0" Grid.Row="1"> 其它变换也都可以参照xaml中处理方式进行,这里就不过多介绍了。
??? WPF中的图像处理简介 标签:解码器 hive decode www. save ams 格式转换 enc 解码 原文地址:https://www.cnblogs.com/lonelyxmas/p/9369150.html
var decoder = BitmapDecoder.Create(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
var bitmapFrame = decoder.Frames[0];
//image1.Source = bitmapFrame;
encoder.Frames.Add(bitmapFrame);
encoder.Save(File.Create(@"r:\1\3.jpg"));
创建解码器后,图像信息就保存在Frames(虽然大部分图像(jpg,bmp,png等)只有一帧,但GIF,ico等图像有多帧)属性中了。
相应的,编码时只要创建编码器,并设置相应的帧即可。
var decoder = BitmapDecoder.Create(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
var bitmapFrame = decoder.Frames[0];??
myRotatedBitmapSource.BeginInit();
myRotatedBitmapSource.Source = bitmapFrame;??
myRotatedBitmapSource.Transform = new
RotateTransform(90);
myRotatedBitmapSource.EndInit();?
var rotatedBitMap = new
TransformedBitmap(bitmapFrame, rotate);
//CroppedBitmap chainedBitMap = new CroppedBitmap(bitmapFrame,new Int32Rect(100, 0, (int)bitmapFrame.Width - 100, (int)bitmapFrame.Height));
//var scare = new ScaleTransform(1.5, 2);
//var scaredBitMap = new TransformedBitmap(bitmapFrame, scare);
encoder.Frames.Add(BitmapFrame.Create(rotatedBitMap));
//encoder.Frames.Add(BitmapFrame.Create(scaredBitMap));
//encoder.Frames.Add(BitmapFrame.Create(chainedBitMap));
encoder.Save(File.Create(@"r:\1\3.jpg"));
Image.Source>
TransformedBitmap Source="/sampleImages/watermelon.jpg" >
TransformedBitmap.Transform>
RotateTransform Angle="90"/>
TransformedBitmap.Transform>
TransformedBitmap>
Image.Source>
Image>
上一篇:在WPF中快速实现键盘钩子
下一篇:1、API接口设计--前言