【发布时间】:2018-04-26 04:50:56
【问题描述】:
我有一个(希望如此)简单的问题(我没有找到答案,这适合我的所有搜索)。
我使用 Xamarin.Forms 1.4.1-Pre-1。 在我的应用中,我有:
byte[] AvatarErfassung; // Bytearray, to later update the webservice
var Avatar = new Image { HeightRequest = 71, WidthRequest = 61, HorizontalOptions = LayoutOptions.Start };
Avatar.Source = "SymbolMann.jpg";
图像“SymbolMann.jpg”包含在项目资源中(在每个项目中)并显示在页面上(没有问题)。
我现在想将图像放在一个字节数组中以将其发送到我们的 Web 服务。
我没有找到任何方法来访问图像“SymbolMann.jpg”(将其加载到字节数组中)或使用(但是)Avatar.Source。
问题:
如何将图像“SymbolMann.jpg”放入字节数组“AvatarErfassung”中?
感谢您的每一个回答
你好迪米特里斯
感谢您(快速)重播。
正如我所写,我使用 Xamarin。Forms。
图像存储为资源:
在 \Resources\Drawable\(适用于 Android)、\Resources\(适用于 iOS)和根目录中(适用于 WP)。
我必须在内容页面上加载图像。
如果我超过了你的代码,到那一行:
var assembly = this.GetType().GetTypeInfo().Assembly;
我收到错误消息(翻译成英文):
“System.Type 不包含 GetTypeInfo 方法的定义(缺少 using 吗?)”
我必须添加特定的使用吗?
你写: // 您可以将“this.GetType()”替换为“typeof(MyType)”,其中 MyType 是程序集中的任何类型。
我必须输入什么类型?
= typeof(????).GetTypeInfo().Assembly:
感谢您的进一步回复。
更新 #2:
首先,感谢您的耐心等待……
不幸的是,在 VS2013 中,我没有找到任何“resolve”函数来显示我丢失的使用 - 但我发现了使用我自己的丢失 :-)
同时我添加了
使用 System.Reflection;
现在,这行: var assembly = this.GetType().GetTypeInfo().Assembly;
已解决并编译无误
此外,我已将 .jpg 的类型从“Android 资源”更改为“嵌入式资源”。
然后应用程序崩溃:
长长度 = s.Length;
好像 s 为空(我认为找不到 jpg)
进一步 - 如果我将类型更改为“嵌入式资源” - Xamarin.Forms (Avatar.Source = "SymbolMann.jpg";) 不再找到该图像
如果我将 .jpg 的类型更改为“编译”,我将无法编译应用程序。
错误信息:
命名空间不能直接包含字段或方法等成员。
那么……资源的正确类型是什么(以便可以使用 assembly.GetManifestResourceStream() 加载它?
我是否必须在文件名 (SymbolMann.jpg) 中添加一些内容才能找到它?
我必须如何更改 Avatar.Source = "SymbolMann.jpg" 才能找到它(如果我将类型从“Android Resource”更改为其他任何内容)?
我的再次需求:
在注册页面上,默认图像(符号)在标准 Xamarin.Forms 图像 (avatar.source = "SymbolMann.jpg" / "SymbolFrau.jpg") 中显示为男性和女性的头像。
.jpg 存储在每个项目(Android、iOS 和 WP)的标准目录中,可以从图像对象毫无问题地访问它们。
然后,用户可以获取默认图像之一或通过 mediapicker 加载另一个图像。
如果用户点击“注册”按钮,我必须从图像创建一个字节数组,以通过 json 将其发送到我们的网络服务。
如果用户通过 mediapicker 选择另一个图像,我有权访问流,问题是,从 default-images 变成一个字节数组(在每个平台上)。
再次感谢您的帮助...
【问题讨论】:
标签: c# image xamarin xamarin.forms