0

我正在制作一个 iOS 游戏,它将从数据库中的线索存储库中选择一个随机线索(文本)和图像(线索和图像一组,1 行)。我有一个带有 webMethods 和功能的 Web 服务,允许我将数据库行拉出。(已测试线索)我一直在 Google 上搜索有关如何将图像从 db 导入 iOS 的文章,但无济于事。

如何通过 Web 服务从数据库导入图像(使用 c# 构建)?谁能指导我正确的方向?我希望它存储在 mutableArray 中,以便在播放器完成播放后,线索和图像将从临时数组中擦除。(我不想将图像放在应用程序中,因为这会使应用程序变得非常大,并且用户能够上传自己的线索和图像,因此来自数据库的实时提要是理想的方法。

现在我在导入图像时被困在网络服务方面。我目前正在使用 List 来存储线索,但不知道用什么来存储图像。我正在考虑使用 ArrayList 来存储对象,但不知道如何在 iOS 端将其转换为图像。正如我上面提到的,我似乎找不到任何通过网络服务将图像导入 iOS 应用程序的教程或示例。(或者我使用了错误的搜索词)

如果any1可以帮助我,或者提供能够实时更新图像和线索的替代解决方案,将会很有帮助。

编辑 - 我找到了 ImageList() 和 List。我现在应该使用哪一个?还发现制作图像文件只是->图像测试文件;

EDIT2 - problem I'm facing
-dealing with image file (image? imagelist?
-when drawing datarow from DB in  webservice, how do i deal with the image file. (guessing ImageList or List<image> (after some luck on research)
-assuming 2nd point works fine, i should be able to solve the client side
(sorry, noobie at webservice, )

.

what I have
-webservice that draw datarow from database for clue(string) (tested and working fine with my function)
-iOS client side with RESTful architecture

.

what I need
-webservice that draw datarow from database for picture(image (format not so important yet)) (code should be similar to drawing clue, only which function to store it in. (using List<string> for clues)
4

2 回答 2

2

听起来你可能有点超前了。尝试一次只解决一个问题;你会取得更大的进步。

首先,您知道如何将图像下载到您的 iOS 应用程序吗?尝试下载一个非常简单的公开图像,例如 Google 涂鸦: https://www.google.com/logos/2012/gymnastics-2012-hp.jpg。无论您使用什么 IOS 应用程序工具包,都应该有一个关于如何下载图像并通过 HTTP 呈现它的演练。

其次,您知道如何在您的网络服务器上托管图像文件吗?尝试自己下载随机的 JPG 或 PNG 图像并将其作为静态文件托管在您的服务器上。然后将您的 IOS 应用程序指向该静态文件并像使用 Google doodle 一样下载它。

如果这两个步骤都有效,那么您就可以开始在您的服务器上托管动态图像。创建一个页面(如果您使用 ASP.NET)或控制器路径(如果您使用 MVC)并让您的 C# 代码用于Response.TransmitFile将图像上传到点击流。再次,将该图像下载到您的 IOS 应用程序以验证它是否有效。

最后,修改您的服务器应用程序以获取参数 - 通过查询字符串(例如:)myhost.com/mypage.aspx?image_id=1或通过 MVC 路径(例如:)myhost.com/images/1。使用该 ID 号从数据库中检索图像信息。然后将图像传输给客户端。如果一切顺利,您应该能够在您的 IOS 应用程序中检索此图像。

我希望这可以帮助您更接近您的项目!

于 2012-08-11T04:27:01.960 回答
1

我没有在 iOS 上编程的经验,但我认为最简单的方法是为此准备 RESTful api。考虑到 REST 准则,您最终得到的是一个定义资源的 Web 服务,而您的客户端只需要请求一个特定的文件(我假设客户端以某种方式知道图像的 id/名称是什么)。这有一个很大的优势——很容易开发(在任何平台上)——服务器端。

对于客户端: 1. 使用WebRequest对象创建一个http get请求 2. 等待数据下载(你可以使用后台worker或只是另一个线程,这样你的应用程序就不会被阻塞) 3. 当请求被完成,您将获得响应对象 - 阅读发送的内容。这将是二进制图像。4. 使用二进制数据(图像)并将其显示在您的应用程序中。

我在不同的 SO 线程中提供了如何使用WebRequest对象的示例:https ://stackoverflow.com/a/11891240/165751

注意:我假设您知道如何从服务器端的数据库(或任何类型的存储)中检索图像,以便您的 Web 服务可以读取它并将其作为 Web 响应返回。

在服务器端技术方面有很多可能性,但如果您想继续使用 .Net 技术堆栈 - 我建议看看WCF REST Service Template 40(CS) - 我过去一直在使用它(而且我的服务也返回了图像 :) 我对此非常满意。

于 2012-08-10T05:37:19.443 回答