2012-04-06 20 views
0

バイト配列で作業しているときに、イメージを水平に反転させるにはどうすればいいですか?私はこれを行うためのアルゴリズムを見つけるのに苦労している、すべての例は私が使用することができない確立されたグラフィックスライブラリを使用することを示唆しているようだ。生のイメージをバイト配列で水平方向に反転するアルゴリズム

+0

このヘルプを願っています。それはJPEGですか?ビットマップ? GIF?バイト配列は単なるコンテナであり、イメージのエンコーディングについては何も言わない。 – Heinzi

+0

私は16ビットのグレースケールの生のイメージを持っています。私はそれを反転させたいのです... – cooldj

+1

["生のイメージ"]という用語は曖昧です。正確な*画像フォーマットとは何ですか?そのヘッダーの外観はどうですか? – Heinzi

答えて

0

私は画像を水平方向に反転する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)); 
} 
関連する問題