2012-08-10 64 views
0

我正在做一个iOS游戏,它将从数据库中的线索库中挑选一个随机线索(文本)和图像(线索和图像进来一组,1行)。我有一个webMethods和函数,允许我拉出数据库行的Web服务。 (线索测试)我一直在Google上搜索关于如何从db中将图像导入iOS的文章,但无济于事。webservice与图像文件

如何通过Web服务从数据库导入图像(使用C#构建)?任何人都可以请指导我在正确的方向吗?我希望它被存储在mutableArray中,这样在播放器完成播放后,线索和图像将从临时数组中清除。 (我不想将图像放在应用程序中,因为这样会使应用程序非常大,并且用户可以上传自己的线索和图像,因此从数据库实时馈送是理想的方法。我正在使用List来存储线索,但不知道要用什么来存储图像,我想用ArrayList来存储对象,但是有不知道如何将其转换为iOS端的图像,正如我上面提到的,我似乎无法找到任何教程或示例通过web服务将图像导入iOS应用程序(或者我使用了错误的搜索术语)

如果有任何帮助我可以帮助我,或提供替代解决方案,使图像和线索的实时更新将有所帮助。

编辑 - 我发现ImageList()和列表。我现在应该使用哪一个? 也发现图像文件只是 - > image testfile;

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) 
+2

首先你应该使用WCF而不使用ASMX网络服务。这是一项不应该用于新开发的传统技术。 – 2012-08-10 03:54:36

+0

对于我来说,还有点不清楚实际上你有问题的部分。 List和ImageList - 你想在客户端使用它们吗?我想?你还提到你在导入图像时遇到问题(服务器端)。我认为有些东西在这里混合。您能否重新解释这个问题并提供更多信息?如果你能够确切地指出你有什么以及是什么导致了你的问题(点数),那也是有帮助的。这将使答案更容易。 – MaciekTalaska 2012-08-10 16:55:50

+0

列表和ImageList()是c#函数。但我不知道我应该使用哪一个。类似列表和ArrayList其中ArrayList已过时。 – 2012-08-11 03:49:36

回答

2

听起来像你可能会让自己变得有点超前。尝试一次解决一个问题;你会取得更多进展。

首先,你知道如何下载图像到你的iOS应用程序吗?尝试下载一个非常简单的公开图片,例如Google涂鸦:https://www.google.com/logos/2012/gymnastics-2012-hp.jpg。无论您使用的是哪种IOS应用程序工具包,都应该有演示如何下载图像并通过HTTP进行展示。

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

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

最后,修改你的服务器应用程序需要一个参数 - 无论是通过查询字符串(例如:myhost.com/mypage.aspx?image_id=1)或通过MVC路径(例如:myhost.com/images/1)。使用该ID号码从数据库中检索图像信息。然后将图像传输到客户端。如果一切顺利,您应该可以在iOS应用程序中检索这个图像。

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

+0

你是对的......一次解决它们会使它不那么容易出错。感谢您的建议和提示,将开始使webMethod上传图像到数据库。 – 2012-08-11 06:06:56

1

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

当涉及到客户端: 1.使用WebRequest对象来创建一个HTTP GET请求 2.等待数据下载(你可以使用后台工作,或只是另一个线程,让您的应用程序是不是被阻止) 3.当请求完成并获得响应对象时 - 读取发送的内容。它将成为二进制图像。 4.使用二进制数据(图像)并将其显示在您的应用程序中。 https://stackoverflow.com/a/11891240/165751

注:

如何使用WebRequest对象的样品是由我在不同的SO线赋予我假设你知道如何在检索数据库图像(或任何种类的商店实际上的)你服务器端,以便您的Web服务可以读取它并将其作为Web响应返回。

当涉及到服务器端技术时,存在很多可能性,但是如果您想要使用.Net技术堆栈 - 我建议查看WCF REST Service Template 40(CS) - 我过去一直在使用它(和我的服务也回来了图像:),我很高兴。

+0

对不起,我想我必须重新解释这个问题和细节。即时通讯使用web服务。我有拉动字符串的函数和方法,但不确定使用哪种方法拉取图像。我无法找到任何功能来触摸图像 – 2012-08-10 09:14:25

+0

我不知道你在说什么字符串。我试图建议使用WCF休息服务,以便客户端可以请求图像。如果您已经启动并运行了Web服务 - 它究竟做了什么?客户端应用程序能够下载图像吗?或者它只是向图像返回一个URI(需要稍后下载)?你想从哪里拉图像?从数据库(但在服务器端)?或者从客户端的服务器(使用Web服务)? – MaciekTalaska 2012-08-10 16:58:23

+0

我想用客户端来调用Web服务,这将从数据库中拉图像。从图像拉,然后我将它加载到客户端的数组中。猜猜我真正想要的是如何处理图像的基本。我发现ListImage和列表(在webservice上的c#功能) – 2012-08-11 03:48:10