在iphone sdk中搜索并保存来自google图像的图像

在iphone sdk中搜索并保存来自google图像的图像,iphone,objective-c,cocoa-touch,ios4,Iphone,Objective C,Cocoa Touch,Ios4,在我的应用程序中,我需要从谷歌图片中搜索特定的单词 例如,我想在图像中搜索Earth 如何从谷歌图像中搜索图像并将选定的图像保存在文档目录中 有什么API可以使用吗?或者有其他方法吗?首先,您需要谷歌图像搜索API 下一步,如果您对仅针对iOS 4.0及更高版本感到满意,您可以使用Grand Central Dispatch和iOS中包含的非常有用的同步数据API。具体来说,我考虑的是[NSData DATA with contentsofURL:]。这将阻止线程,直到它下载整个图像,因此不要在

在我的应用程序中,我需要从谷歌图片中搜索特定的单词

例如,我想在图像中搜索
Earth

如何从谷歌图像中搜索图像并将选定的图像保存在文档目录中


有什么API可以使用吗?或者有其他方法吗?

首先,您需要谷歌图像搜索API

下一步,如果您对仅针对iOS 4.0及更高版本感到满意,您可以使用Grand Central Dispatch和iOS中包含的非常有用的同步数据API。具体来说,我考虑的是[NSData DATA with contentsofURL:]。这将阻止线程,直到它下载整个图像,因此不要在主线程上运行它。幸运的是,GCD允许您轻松地在后台线程上抛出内容。因此,您的代码可能如下所示:

dispatch_queue_t NetworkQueue = dispatch_queue_create("NetworkQueue", 0);

dispatch_async(NetworkQueue,^{
    NSData* imageResultsData = [NSData dataWithContentsOfURL:
    [NSURL urlWithString:@"https://ajax.googleapis.com/ajax/services/search/images?some_images_query_here"];
   //do something with that data
   //let's say you unpacked it into an NSArray of NSURLs
   for(NSURL* url in myImageArray) {
        dispatch_async(NetworkQueue,^{
            NSData* imageData = [NSData dataWithContentsOfURL:url];
            [imageData writeToFile:file_name_here atomically:YES];
        });
   }
});
谷歌API

您必须自己显示图像,因为结果是json响应。然而,这将给你最大的控制。结果将包含可用于显示预览的缩略图URL

下载图像 可以通过多种方式下载图像:

  • UIImage方法的定义和使用
谷歌API的使用仅在某些情况下有效,例如

使用此接口的应用程序必须遵守所有现有的服务条款。最重要的是,您必须在请求中正确标识自己

保存图像 收到结果后,您可以使用以下工具将图像保存到磁盘:

NSString *aFileName = @"myImage.jpg";
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentDirectory stringByAppendingPathComponent:aFileName];

[myImageAsData writeToFile:path atomically:YES];
或者,如果您已经将图像设置为UIImage

NSData *myImageAsData = [NSData dataWithData:UIImagePNGRepresentation(anImage)];
[myImageAsData writeToFile:path atomically:YES];

谷歌图像搜索不起作用:

“谷歌图像搜索API从5月份开始就被正式弃用 它将按照我们的折旧政策继续工作,但是 您每天可能提出的请求数量可能有限。我们 鼓励您使用自定义搜索API,该API现在支持图像 搜索。”


这是到的链接

谢谢链接。通过GoogleAPI,我在-(void)connectionIDFinishLoading:(NSURLConnection)连接方法中获得了(图像的)URL数组。然后在循环中获取NSData中的图像(使用NSData imageData=[NSData DATA WITHCONTENTSOFURL:[NSURL URLWithString:url]];)。这很管用,但花的时间太多了。能做些什么?@Meghan我认为这是一个不同的问题,值得一个不同的问题。嗨@NickWeaver首先感谢这些好的文件。如果你也这么做了,我会请求你,那么你能分享代码吗。因为我遇到了真正的麻烦,我在过去10天里一直在做同样的事情,但无法得到预期的结果。请帮帮我out@Deepak希瓦尼给你一个要点:。JSON API的使用非常简单。@NickWeaver感谢您的支持,但我想从多个图像中获取一个图像,然后在应用程序中使用所选图像。关于详细信息,我想请你看看链接嘿@Meghan,你能不能告诉我,你是如何管理这些东西的。我的问题和你提到的一样。请给我一条出路,因为我是新的iOS平台,请帮我个忙。你可以使用@Nick Weaver的答案,你也可以选择。它使用队列下载图像。