Como converter o ImageSource em byte [] e voltar ao ImageSourc

Preciso ter o caminho do arquivo de imagem do usuário e armazenar a imagem no banco de dados do servidor sq

Peguei o arquivo do usuário e convertei para byte [] usando o método

public static byte[] ImageToByteArray( BitmapSource bitmapSource )
    {
        byte[] imgAsByteArray = null;

        if( bitmapSource != null )
        {
            imgAsByteArray = ( new WriteableBitmap( ( BitmapSource )bitmapSource ) ).Pixels.SelectMany( p => new byte[] 
            { 

                ( byte )  p        , 
                ( byte )( p >> 8  ), 
                ( byte )( p >> 16 ), 
                ( byte )( p >> 24 ) 

            } ).ToArray(); 
        }

        return imgAsByteArray;
    }

mas agora não consigo convertê-lo novamente em BitmapSource. O código que escrevi para convertê-lo de volta gera uma exceção

O código

public static BitmapSourcebyteArrayToImage( byte[] imageBytes )
    {
        BitmapImage bitmapImage = null;
        using( MemoryStream ms = new MemoryStream( imageBytes, 0, imageBytes.Length ) )
        {
            bitmapImage = new BitmapImage();
            bitmapImage.SetSource( ms );    
        }

        return (BitmapSource)bitmapImage;
    }

Eu recebo a exceção na linha bitmapImage.SetSource (ms);
As informações de exceção são 'falha catastrópica'

questionAnswers(1)

yourAnswerToTheQuestion