2017-01-19 19 views
1

Android用のビットマップとiOS用のUIImageがあります。何らかの形でXamarin Forms Imageコントロールに表示する方法はありますか?AndroidおよびiOSで作成されたXamarinフォームのビットマップ表示

明らかに私は依存性サービスが必要です。いくつかのソースを使用してビットマップまたはuiimageを作成する2つの実装を用意しますが、これらの2つの製品を1つのフォームコントロールに統合するにはどうすればよいですか? AndroidとiOSの両方のメソッドは、イメージコントロールが理解して表示できる何かを返す必要があります。私はそれが何であるか分からない。

編集:可能な場合は、私がストレージスペースを使用しない方法を探します。

編集2:

私はJasonsの提案を試みましたが正常に動作しました。

私はAndroidのプロジェクトにビットマップを作成してのMemoryStreamオブジェクトを返します。そして、私は私のXamarin.Formsイメージコントロールでそれを消費

MemoryStream stream = new MemoryStream(); 
newImage.Compress(Bitmap.CompressFormat.Png, 0, stream); 
return stream; 

を:

var stream = DependencyService.Get<ICrossPlatformImageProcesor>().Combine_Images(imagePath); 
stream.Position = 0; 
img_ImageView.Source = Xamarin.Forms.ImageSource.FromStream(() => stream); 
+1

あなたのUIImage /ビットマップを回す:とにかく

、Xamarin.FormsでImageコントロールを使用すると、このような単純にコードをすることができ、画像のソース形式にURIから画像をロードするImageSource例えば、ファイル、ウリ、およびリソースをサポートjpg/pngに変換してフォームに表示します – Jason

+0

@Jason保存スペースを使用せずに、メモリ内オブジェクトとして表示する方法をご存知ですか? – Siggi

+1

データをMemoryStreamにコピーし、StreamImageSourceを使用します。 – Jason

答えて

0

私は2つを持っていますいくつかのソースを使用してビットマップまたはuiimageを作成する実装ですが、これらの2つの製品を1つのフォームコントロールに統合するにはどうすればよいですか?

xamarin形式のImage Controlを使用するだけで、プラットフォームごとに画像を読み込むことも、表示することもできます。

詳細については、Working with Imagesを参照してください。

可能であれば、私はストレージスペースを使用しない方法を探します。

私はこれをあまりよく理解していません。メモリを使用しないということは、私はそれが不可能だと思います。あなたのイメージがストレージに保存されていないことを意味するならば、可能性としてあなたのイメージのインターネット上にURLアドレスがありますか?

var webImage = new Image { Aspect = Aspect.AspectFit }; 
webImage.Source = ImageSource.FromUri(new Uri("https://xamarin.com/content/images/pages/forms/example-app.png")); 
関連する問題