Xamarin – 将图像转换为字节数组

我使用媒体插件从Android设备或iOS设备中拍摄或选择照片。 然后,我想使用LINQtoTwitter发布该图像。 为此,图像需要采用bytes []格式。 如何将我的图像转换为字节以便上传?

获取图像的代码

takePhoto.Clicked += async (sender, args) => { if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported) { await DisplayAlert("No Camera", ":( No camera avaialble.", "OK"); return; } var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions { PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium, Directory = "Sample", Name = "test.jpg" }); if (file == null) return; await DisplayAlert("File Location", file.Path, "OK"); temp2 = file.Path; image.Source = ImageSource.FromStream(() => { var stream = file.GetStream(); file.Dispose(); return stream; }); }; pickPhoto.Clicked += async (sender, args) => { if (!CrossMedia.Current.IsPickPhotoSupported) { await DisplayAlert("Photos Not Supported", ":( Permission not granted to photos.", "OK"); return; } var file = await Plugin.Media.CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions { PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium }); if (file == null) return; image.Source = ImageSource.FromStream(() => { var stream = file.GetStream(); file.Dispose(); return stream; }); }; 

推特图片代码

 static async void SendTweetWithSinglePicture() { var auth = new SingleUserAuthorizer { CredentialStore = new SingleUserInMemoryCredentialStore { ConsumerKey = "KEY", ConsumerSecret = "KEY", AccessToken = "KEY", AccessTokenSecret = "KEY" } }; var context = new TwitterContext(auth); var uploadedMedia = await context.UploadMediaAsync(IMAGE); var mediaIds = new List { uploadedMedia.MediaID }; await context.TweetAsync( "This is a test tweet", mediaIds ); } 

任何帮助将非常感激

找到解决方案

 takePhoto.Clicked += async (sender, args) => { if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported) { await DisplayAlert("No Camera", ":( No camera avaialble.", "OK"); return; } var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions { PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium, Directory = "Sample", Name = "test.jpg" }); if (file == null) return; await DisplayAlert("File Location", file.Path, "OK"); temp2 = file.Path; image.Source = ImageSource.FromStream(() => { var stream = file.GetStream(); return stream; }); using (var memoryStream = new MemoryStream()) { file.GetStream().CopyTo(memoryStream); file.Dispose(); imageAsBytes = memoryStream.ToArray(); } }; static async void SendTweetWithSinglePicture() { var auth = new SingleUserAuthorizer { CredentialStore = new SingleUserInMemoryCredentialStore { ConsumerKey = "KEY", ConsumerSecret = "KEY", AccessToken = "KEY", AccessTokenSecret = "KEY" } }; var context = new TwitterContext(auth); var uploadedMedia = await context.UploadMediaAsync(imageAsBytes, "image/jpg"); var mediaIds = new List { uploadedMedia.MediaID }; await context.TweetAsync( "Hello World! I am testing @dougvdotcom's #LinqToTwitter demo, at " + "https://www.dougv.com/2015/08/posting-twitter-status-updates-tweets-with-linqtotwitter-and-net-part-3-media-tweets", mediaIds ); }