如何在iPhone中发布带有一些文字的图片

时间:2011-02-28 08:33:02

标签: iphone

我想知道有什么方法可以在推特上用一些文字发布图片,有人建议使用“http://tinyurl.com/”。我不知道从哪里开始,在我的以前的应用程序我成功但是只包含文本。 正确的方向将是一个很大的帮助。

2 个答案:

答案 0 :(得分:1)

有两种方法。我建议你使用ShareKit。它完成了大部分工作。

答案 1 :(得分:0)

要将图片发布到Twitter,我们必须首先将图片发布到twit pick然后我们必须将该url发送到twitter,这是将图像发送到twitter的过程这是将图像发送到twitter的示例代码... .......

NSString *postUrl = @"https://api.twitter.com/1/statuses/update.json";

ASIFormDataRequest *request = [[ASIFormDataRequest alloc]
                               initWithURL:[NSURL URLWithString:postUrl]];

NSMutableDictionary *postInfo = [NSMutableDictionary
                                 dictionaryWithObject:statusText.text
                                 forKey:@"status"];

NSLog(@"%@",postInfo);
NSString *str1= statusText.text;

NSLog(@"Status posted. HTTP result code: %d", request.responseStatusCode);



[request release];

[statusText resignFirstResponder];  

ASIFormDataRequest *req = [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:@"http://api.twitpic.com/2/upload.json"]];


[req addRequestHeader:@"X-Auth-Service-Provider" value:@"https://api.twitter.com/1/account/verify_credentials.json"];
[req addRequestHeader:@"X-Verify-Credentials-Authorization"
                value:[oAuth oAuthHeaderForMethod:@"GET"
                                           andUrl:@"https://api.twitter.com/1/account/verify_credentials.json"
                                        andParams:nil]];    
[req setData:UIImageJPEGRepresentation(imageView.image, 0.8) forKey:@"media"];

// Define this somewhere or replace with your own key inline right here.

[req setPostValue:@"74734e805f2ad85afae441ca12c16087" forKey:@"key"];
[req startSynchronous];

NSLog(@"Got HTTP status code from TwitPic: %d", [req responseStatusCode]);

NSLog(@"Response string: %@", [req responseString]);


NSDictionary *twitpicResponse = [[req responseString] JSONValue];
NSLog(@"%@",[[req responseString] JSONValue]);
textView.text = [NSString stringWithFormat:@"Posted image URL: %@", [twitpicResponse valueForKey:@"url"]];
NSString *str=[NSString stringWithFormat:@" %@",[twitpicResponse valueForKey:@"url"]];
NSLog(@"%@",str);
if([str isEqualToString:@" (null)"])
{
    UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Message" message:@"Could not authenticate you(header rejected by twitter)" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
    [alertView show];
}
else 
{

    NSString *postUrl = @"https://api.twitter.com/1/statuses/update.json";

    ASIFormDataRequest *request = [[ASIFormDataRequest alloc]
                                   initWithURL:[NSURL URLWithString:postUrl]];
    NSString *txtmessage=[str1 stringByAppendingString:str];

    /*NSMutableDictionary *postInfo = [NSMutableDictionary
                                     dictionaryWithObject:[twitpicResponse valueForKey:@"url"]
                                     forKey:@"status"];*/
    NSMutableDictionary *postInfo = [NSMutableDictionary
                                     dictionaryWithObject:txtmessage
                                     forKey:@"status"];
    for (NSString *key in [postInfo allKeys]) {
        [request setPostValue:[postInfo objectForKey:key] forKey:key];
    }

    [request addRequestHeader:@"Authorization"
                        value:[oAuth oAuthHeaderForMethod:@"POST"
                                                   andUrl:postUrl
                                                andParams:postInfo]];

    [request startSynchronous];

    if(request.responseStatusCode!=200)
    {
        UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Message" message:@"Already posted" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [alertView show];
    }
    else {
        UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Message" message:@"sucess" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [alertView show];
    }


    NSLog(@"Status posted. HTTP result code: %d", request.responseStatusCode);

    statusText.text = @"";

    [request release];

    [statusText resignFirstResponder];  
}