私の目標は、各プロジェクトのイメージフォルダに保存された埋め込みイメージをストリームし、バイト配列に変換し、PCLStorageを使用してデバイスのローカルストレージファイルシステムに保存することです。私が理解できない部分は、埋め込まれた画像からストリーミングする方法です。Xamarinはイメージをストリームに変換します
var embeddedImage = new Image { Aspect = Aspect.AspectFit };
embeddedImage.Source = ImageSource.FromResource("applicationIcon.png");
その後、私はパスを持っていた場合、私はそれをストリーミングすることができ、または私はストリームを持っていた場合、私はbyte []
に変換できます。ファイルソースが見つからないため、以下のコードは機能しません(明らかに)。
string localFileUri = string.Empty;
// Get hold of the file system.
IFolder localFolder = FileSystem.Current.LocalStorage;
IFile file = await FileSystem.Current.GetFileFromPathAsync("applicationIcon.png");
using (Stream stream = await file.OpenAsync(FileAccess.Read))
{
using (var ms = new MemoryStream())
{
var byteArray = ms.ToArray();
var storeragePath = await iStorageService.SaveBinaryObjectToStorageAsync(string.Format(FileNames.ApplicationIcon, app.ApplicationId), byteArray);
app.IconURLLocal = storeragePath;
}
}
唯一のオプションは、何らかの種類のリソースロケータを使用して、追加するプロジェクトの種類ごとにそのコードを維持するように思われます。それほどエレガントではない。別の方法がありますか?
埋め込みリソースを探しています。次に、Assembly.GetManifestResourceStreamメソッドを使用してストリームにアクセスします。 –
また、イメージのビルドアクションが埋め込みリソースであることを確認する必要があります。 –
deckertron_9000ありがとうございました。それは私にそれを理解する正しい道に置いた! –