사진 갤러리에서 이미지를 이메일에 첨부하는 데 약간의 문제가 있습니다.MFMailComposeViewController : 사진 갤러리에서 이미지 첨부
기본적으로 내 응용 프로그램의 기능 중 하나는 사용자가 사진을 찍을 수있게합니다. 그들이 스냅 샷을 찍을 때 이미지에 대한 URL 참조를 핵심 데이터에 기록합니다. 이미지로 이동하려면 ALAssetRepresentation
을 거쳐야한다는 것을 이해합니다. 사용자가 찍은 이미지를 검토하기를 원하면 응용 프로그램 내에서이 작업을 실행해야합니다.
나는 이제 사용자가 이벤트에 대해 촬영 한 모든 사진을 이메일에 첨부 할 수 있도록 시도하고 있습니다. 이 작업을 수행하는 동안 URL References를 저장하는 Core Data 엔터티를 반복하고 ALAssetsLibrary
에서 UIImage
을 반환하는 메서드를 호출 한 다음 NSData
/UIImageJPEGRepresentation
및 MFMailComposeViewController
/addAttachmentData
메서드를 사용하여 첨부합니다.
문제는 : 이메일이 사용자에게 제공되면 이미지를 나타내는 작은 파란색 사각형이 표시되고 이미지가 첨부되지 않습니다.
- (void)sendReportReport
{
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
[mailer setSubject:@"Log: Report"];
NSArray *toRecipients = [NSArray arrayWithObjects:@"[email protected]", nil];
[mailer setToRecipients:toRecipients];
NSError *error;
NSFetchRequest *fetchPhotos = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Photo" inManagedObjectContext:__managedObjectContext];
[fetchPhotos setEntity:entity];
NSArray *fetchedPhotos = [__managedObjectContext executeFetchRequest:fetchPhotos error:&error];
int counter;
for (NSManagedObject *managedObject in fetchedPhotos) {
Photo *photo = (Photo *)managedObject;
// UIImage *myImage = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", counter++]];
NSData *imageData = UIImageJPEGRepresentation([self getImage:photo.referenceURL], 0.5);
// NSData *imageData = UIImagePNGRepresentation([self getImage:photo.referenceURL]);
// [mailer addAttachmentData:imageData mimeType:@"image/jpeg" fileName:[NSString stringWithFormat:@"%i", counter]];
[mailer addAttachmentData:imageData mimeType:@"image/jpeg" fileName:[NSString stringWithFormat:@"a.jpg"]];
counter++;
}
NSString *emailBody = [self getEmailBody];
[mailer setMessageBody:emailBody isHTML:NO];
[self presentModalViewController:mailer animated:YES];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure"
message:@"Your device doesn't support the composer sheet"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
}
과 UIImage
반환 방법 :
참고 : 여기에
는 코드이 위의 코드를 실행 않습니다, 그것은 단순히 이미지를 첨부하지 않습니다. 또한, 내가 성공적으로 응용 프로그램 내 갤러리에서 이미지를 첨부 할 수있는 한, 나는 그들을UIImageView
. 이미 이미지로 설정했습니다. 이미 (기본적으로, 나는 이미지에 대한 포인터를
UIImageView
에서 가져 와서
addAttachmentData
메서드입니다.) Core Data를 반복하고 이미지를
UIImageView
으로 설정하지 않고 연결하려고하면 문제가 발생합니다.
팁을 주시면 감사하겠습니다.
감사합니다. Jason
첨부 파일로 추가하기 전에 이미지의 내용을 인쇄 했습니까? ('CFShow ([self getImage : photo.referenceURL]);') 아마이 시점에서 nil입니까? – calimarkus
안녕 Jaydee, 내 추측은 당신이 옳다는 것입니다. 가능성이 없습니다. 하지만 어떻게해야합니까? 내가 잘못된 방식으로이 접근하고 있지만 UIImage 반환하는 메서드를 만드는? 포토 갤러리 이미지에 대한 URL 참조 목록을 통해 다른 내용을 반복해야합니까? – JasonBub
그냥 올라가서 오류를 찾으십시오. 이미지가 nil 인 경우 참조 URL보다 분명히 잘못되었습니다. URL 작성 방법을 확인하십시오 .. – calimarkus