使用medialibrary WP8将bytearray(加密密码)保存为Picture

时间:2014-01-06 13:09:01

标签: image windows-phone-8 bytearray encryption media-library

我真的对Windows Phone 8上的某些存储功能感到困惑。我试图在本地手机存储中保存由多个应用共享的凭据(密码/用户)。 从那里,用户只能在一个应用程序中更改一次密码,并且所有应用程序都会更改密码。 我经历过3种可能性

  1. 保存在外部服务器上
  2. 将Medialibrary保存为图片
  3. 保存管理凭据的新特定应用的Isolatedstorage
  4. 在这个暴露第二种情况的代码中我遇到了一个问题“System.InvalidOperationException。发生了意外错误”

        public static void SaveToFile(byte[] Encryptedfile, string FileName)
        {      
            using (var mediaLibrary = new MediaLibrary())
            {
                using (var stream = new MemoryStream(Encryptedfile))
                {
                        var file = string.Format(FileName, Guid.NewGuid());
                        stream.Seek(0, SeekOrigin.Begin);
                        var picture = mediaLibrary.SavePicture(file, stream);  //ERROR
                }
            }
        }
    

    函数的调用

            byte[] PasswordByte = Encoding.UTF8.GetBytes(password);
            byte[] UserByte = Encoding.UTF8.GetBytes(user);
    
            byte[] EncryptedPasswordUser = ProtectedData.Protect(PasswordByte, null);
            byte[] EncryptedUser = ProtectedData.Protect(UserByte, null);
    
    
            IsolatedStorageOperations.SaveToFile(EncryptedPasswordUser, "Password");
            IsolatedStorageOperations.SaveToFile(EncryptedUser, "User");
    

    如果你能给我另一种方法来保存WP8上常见本地存储中的文件,或者如果你可以通过medialibrary给我解决问题,我会很高兴。

    感谢

1 个答案:

答案 0 :(得分:0)

使用WriteableBitmap将图像保存在媒体库中。愿这可以帮到你

public static void SaveToFile(byte[] Encryptedfile, string FileName)
     {
       using (var stream = new MemoryStream(Encryptedfile))
         {
         var file = string.Format(FileName, Guid.NewGuid());
         WriteableBitmap bitmap = new WriteableBitmap(100,100);
         bitmap.SaveJpeg(stream, bitmap.PixelWidth, bitmap.PixelHeight, 0, 100);
         stream.Seek(0, SeekOrigin.Begin);
         using (MediaLibrary mediaLibrary = new MediaLibrary())
          mediaLibrary.SavePicture(file , stream);
         MessageBox.Show("Image saved");
         }
     }