【问题标题】:Algorithm to Horizontally flip a raw image in a byte array在字节数组中水平翻转原始图像的算法
【发布时间】:2012-04-06 16:08:51
【问题描述】:

当我使用字节数组时,如何水平翻转图像。我无法找到执行此操作的算法,所有示例似乎都建议使用我无法使用的已建立的图形库。

【问题讨论】:

  • 这取决于图像的文件格式(编码)。是JPEG吗?位图?动图?字节数组只是一个容器,它并没有说明图像的编码。
  • 我有 16 位灰度原始图像,我想翻转...
  • "raw image" 这个词是模棱两可的。 确切图像格式是什么?它的标题是什么样的?
  • 文件格式“.raw”保存在一维数组中
  • 我不想这么说,但是“.raw”可以包含许多不同的格式,具体取决于创建文件的相机或软件。你从哪里得到文件?你用什么软件打开/显示它?您的原始文件是否包含元信息(宽度*高度)或者您是否必须从其他来源知道此信息?

标签: c# image image-processing


【解决方案1】:

我使用 WPF 电源水平翻转图像,希望对您有所帮助

<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>


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));
}

【讨论】:

    猜你喜欢
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2016-07-17
    • 2019-10-18
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    相关资源
    最近更新 更多