2012-04-06 9 views
0

Wie kippe ich das Bild horizontal, wenn ich mit einem Byte-Array arbeite. Ich habe Probleme, den Algorithmus dafür zu finden, alle Beispiele scheinen zu empfehlen, etablierte Grafikbibliotheken zu verwenden, die ich nicht verwenden kann.Algorithmus zum horizontalen Spiegeln eines unbearbeiteten Bildes in einem Byte-Array

+0

Es hängt vom Dateiformat (Codierung) des Bildes. Ist es ein JPEG? eine Bitmap? ein gif? Ein Byte-Array ist nur ein Container, es sagt nichts über die Codierung des Bildes aus. – Heinzi

+0

Ich habe 16-Bit Graustufen-Rohbild, das ich umdrehen möchte ... – cooldj

+1

Der Begriff ["rohe Bild"] (http://en.wikipedia.org/wiki/Raw_image_format) ist mehrdeutig. Was ist das * genaue * Bildformat? Wie sieht sein Header aus? – Heinzi

Antwort

0

i WPF Energie verwendet das Bild horizontal zu drehen, hoffen, dass diese Hilfe

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