C# 在字节数组中水平翻转原始图像的算法
使用字节数组时,如何水平翻转图像。我很难找到执行此操作的算法,所有示例似乎都建议使用我无法使用的已建立图形库。我使用WPF power水平翻转图像,希望这有帮助C# 在字节数组中水平翻转原始图像的算法,c#,image,image-processing,C#,Image,Image Processing,使用字节数组时,如何水平翻转图像。我很难找到执行此操作的算法,所有示例似乎都建议使用我无法使用的已建立图形库。我使用WPF power水平翻转图像,希望这有帮助 <Image Name="image" Stretch="Fill" RenderTransformOrigin="0.5,0.5"> <Image.RenderTransform> <TransformGroup> <ScaleTransform
<Image Name="image" Stretch="Fill" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleY="1" ScaleX="-1"/>
<SkewTransform AngleY="0" AngleX="0"/>
<RotateTransform Angle="0"/>
<TranslateTransform/>
</TransformGroup>
</Image.RenderTransform>
</Image>
这取决于图像的文件格式编码。是JPEG吗?位图?gif?字节数组只是一个容器,它没有说明任何关于图像编码的内容。我有一个16位的灰度原始图像,我想翻转它…这个术语是不明确的。确切的图像格式是什么?它的头看起来像什么?文件格式.raw保存在一维数组中我不想这么说,但是.raw可以包含许多不同的格式,这取决于创建文件的相机或软件。你从哪里得到这个文件?你用什么软件打开/显示它?您的原始文件是否包含元信息宽度*高度,或者您必须从其他来源了解此信息?
public Window2()
{
InitializeComponent();
var open = new OpenFileDialog();
open.ShowDialog();
var localImage = new Bitmap(open.FileName);
var stream = new MemoryStream();
localImage.Save(stream, ImageFormat.Png);
var byteArray = ImageToByteArray(localImage);
var imageAgain = ByteArrayToImage(byteArray);
var imageSource = new BitmapImage();
imageSource.BeginInit();
var ms = new MemoryStream();
imageAgain.Save(ms, ImageFormat.Bmp);
ms.Seek(0, SeekOrigin.Begin);
imageSource.StreamSource = ms;
imageSource.EndInit();
image.Source = imageSource;
}
public byte[] ImageToByteArray(System.Drawing.Image imageIn)
{
var memoryStream = new MemoryStream();
imageIn.Save(memoryStream, ImageFormat.Gif);
return memoryStream.ToArray();
}
public System.Drawing.Image ByteArrayToImage(byte[] byteArrayIn)
{
return System.Drawing.Image.FromStream(new MemoryStream(byteArrayIn));
}