我像这样从互联网上保存图像:
public void SetSelectedConsultant(string consultantId)
{
// ...
var path = this.fileStore.PathCombine(App.IMAGES_FOLDER, App.SELECTED_CONSULTANT_IMAGE_FILENAME);
if (this.fileStore.Exists(path))
{
this.fileStore.DeleteFile(path);
}
this.fileStore.EnsureFolderExists(App.IMAGES_FOLDER);
this.GeneralAsyncLoad(
App.SERVER_URL + App.CONSULTANT_FILE_NAME,
stream =>
{
this.SaveConsultantImage(stream, path);
this.mvxMessenger.Publish(new ConsultantUpdatedMessage(this));
});
}
private void SaveConsultantImage(Stream stream, string path)
{
var memoryStream = new MemoryStream();
stream.CopyTo(memoryStream);
byte[] pictureBytes = memoryStream.ToArray();
this.fileStore.WriteFile(path, pictureBytes);
}
ConsultantUpdatedMessage
被我的视图模型捕获,它将为ConsultantImageUrl
提升RaisePropertyChanged。我的其他属性如ConsultantName等在视图中正确刷新,但图像拒绝显示在控件中:
<Mvx.MvxImageView
android:scaleType="fitXY"
android:layout_margin="5dp"
android:layout_width="220dp"
android:layout_height="wrap_content"
local:MvxBind="ImageUrl ConsultantImageUrl" />
我检查文件是否存在,使用fileStore.Exists,结果为&#34; true&#34;,但文件不会显示。我有可能以错误的方式保存图片吗?
编辑:作为操作方法,我使用了本教程(https://github.com/MvvmCross/NPlus1DaysOfMvvmCross/tree/master/N-16-CollectABull-Part5)。但是,他们使用本地相册中的照片而不是下载一张。
答案 0 :(得分:1)
我发现了问题。网址错误,它下载了另一个(无图像)文件并保存。因此,文件存在,但无法在视图中显示,因为它不是图像。