Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在目录中找到照片!(以编程方式)_Iphone_Objective C_Xcode_Ipod Touch - Fatal编程技术网

Iphone 在目录中找到照片!(以编程方式)

Iphone 在目录中找到照片!(以编程方式),iphone,objective-c,xcode,ipod-touch,Iphone,Objective C,Xcode,Ipod Touch,stackoverflow的老兄们 我的问题:我需要发送一封包含3个附件的电子邮件。第一个是.txt,进展顺利,他没有问题,但问题在于图片。我用以下内容捕获打印屏幕: -(IBAction)screenShot{ maintimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(update) userInfo:nil repeats:YES]; } -(void)update{

stackoverflow的老兄们

我的问题:我需要发送一封包含3个附件的电子邮件。第一个是.txt,进展顺利,他没有问题,但问题在于图片。我用以下内容捕获打印屏幕:

-(IBAction)screenShot{
    maintimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(update) userInfo:nil repeats:YES];
}

-(void)update{
    time = time + 1;
    if(time == 2){
        [self hideThem]; //hides the buttons
        UIGraphicsBeginImageContext(self.bounds.size);
        [self.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        UIImageWriteToSavedPhotosAlbum(screenImage, nil, nil, nil);

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"GRAPH SAVED" message:@"YOUR GRAPH HAS BEEN SAVEN IN THE PHOTO ALBUM" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        [alert release];
        [maintimer invalidate];
        time = 0;
    }
    [self bringThem]; //brings the buttons back

}
但现在我需要得到我创建的这个图像!我尝试使用与文本相同的代码:

-(IBAction)sendMail
{
    (..)
        //HERE IS WHERE THE NAME IS GIVEN
    NSString *filename = [NSString stringWithFormat:@"%f.txt", [[NSDate date] timeIntervalSince1970]];

        //THIS IS GOING TO STORE MY MESSAGE STUFF
    NSString *content = [[NSMutableString alloc]init];

        (...) //LOTS OF UNNECESSARY CODE

        //HERE IS WHERE IT BILDS THE FILE
    [self writeToTextFile:filename content:content];

         //HERE IS THE CODE WHERE IT ATTACHES THE FILE
    [self sendMailWithFile:filename];
    //[content release];
}

-(void)sendMailWithFile : (NSString *)file 
{
        //THIS IS THE CODE THAT GETS THE TEXT
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);   
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *fileName = [NSString stringWithFormat:@"%@/%@", documentsDirectory, file]; 
    NSData *data = [[NSData alloc] initWithContentsOfFile:fileName];


    //THIS WAS MY TRY TO GET THE PHOTO ON THE SAME STYLE OF THE TEXT              
    NSArray *photoPath = NSSearchPathForDirectoriesInDomains(NSPicturesDirectory, NSUserDomainMask, YES);
    NSString *photoDirectoryForFirstPhoto = [photoPath objectAtIndex:0];
    NSString *photoName_First = [NSString stringWithFormat:@"%@/%@", photoDirectoryForFirstPhoto, /*I DO NOT HAVE THE PHOTO NAME*/@"FirstPhoto"];
    NSData *photoData_First = [[NSData alloc] initWithContentsOfFile:photoName_First];


    MFMailComposeViewController *mailComposer = [[MFMailComposeViewController alloc] init];

    if ([MFMailComposeViewController canSendMail]) 
    {
        mailComposer = [[MFMailComposeViewController alloc] init];
        mailComposer.mailComposeDelegate = self;
        [mailComposer setSubject:@"RK4 data"];

        [mailComposer addAttachmentData:data mimeType:@"text/plain" fileName:@"[RK4][EQUATION][TEXT]"];
        [mailComposer addAttachmentData:photoData_First mimeType:@"image/png" fileName:@"[RK4][EQUATION][IMAGE]"];
        [mailComposer setMessageBody:@"iCalculus Runge-Kutta data." isHTML:NO];
        [self presentModalViewController:mailComposer animated:YES];

    }
    else (...) 

    [mailComposer release];
    [data release];

}
这就是我的问题。我需要找到一种方法来获取我拍摄的打印屏幕并将其连接起来。 因为我需要在他点击“发送邮件”按钮后立即提供电子邮件中的所有附件

谢谢。

看看如何使用base-64将图像直接嵌入电子邮件,这比将临时图像转储到用户保存的相册中要干净得多

编辑: 要使用NSData处理base 64,请使用底部的下载。

了解如何使用base-64将图像直接嵌入电子邮件中,这应该比将临时图像转储到用户保存的相册中要干净得多

编辑:
要使用NSData处理base 64,请使用底部的下载。

而不是保存到照片库,您应该保存到文档目录或tmp目录,以获取文档目录,您可以使用以下方法

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* dd = [paths objectAtIndex:0];

NSString *path = [dd stringByAppendingPathComponent:@"file.png"];
[UIImagePNGRepresentation(screenImage) writeToFile:path atomically:NO];

您不应该保存到照片库,而应该保存到documents目录或tmp目录,以获取可以使用以下命令的documents目录

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* dd = [paths objectAtIndex:0];

NSString *path = [dd stringByAppendingPathComponent:@"file.png"];
[UIImagePNGRepresentation(screenImage) writeToFile:path atomically:NO];

这是一个更好的方法,但是有一个小问题,就是没有显示base64编码。这是一个更好的方法,但是有一个小问题,就是没有显示base64编码。