Ich habe Probleme beim Herausfinden von NSBundle
& DocumentDirectory-Daten. Ich habe ein Kamerabild " imageView ", das ich in der speichere, NSDocumentDirectoy
und möchte es dann zum Anhängen an eine E-Mail abrufen.
Hier der Speichercode:
- (IBAction)saveImage {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
UIImage *image = imageView.image; // imageView is my image from camera
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:savedImagePath atomically:NO];
}
Hier ist der neue Datencode zum Abrufen:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
NSData *myData = [[[NSData alloc] initWithContentsOfFile:appFile] autorelease];
[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"savedImage"];
ios
iphone
email
nsdocument
Michael Robinson
quelle
quelle
Antworten:
- (IBAction)getImage { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"]; UIImage *img = [UIImage imageWithContentsOfFile:getImagePath]; }
Damit sollten Sie loslegen!
quelle
Swift 3
// Create a URL let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first let imageURL = documentsURL?.appendingPathComponent("MyImageName.png") // save image to URL let myImage = imageView.image! // or wherever you have your UIImage do { try UIImagePNGRepresentation(myImage)?.write(to: imageURL!) } catch {} // Use the URL to retrieve the image for sharing to email, social media, etc. // docController.URL = imageURL // ...
Ich erzwinge der Kürze halber das Auspacken einiger Optionen. Verwenden Sie
guard
oderif let
in Ihrem Code.quelle
.documentationDirectory
und.documentDirectory
, die nicht dasselbe sind. Die FrageDa sich jede iPhone-App in einer eigenen Sandbox befindet, haben Sie keinen Zugriff auf einen geräteweiten Dokumentenordner. Um ein Bild an eine E-Mail anzuhängen, speichern Sie das Bild in Ihrem eigenen Dokumentenordner. Versuchen Sie, mit [@ "~ / Documents" StringByExpandingTildeInPath] Ihren lokalen Dokumentenordner abzurufen - das funktioniert bei mir. Es sieht so aus, als ob die Technik, mit der Sie das Bild an eine E-Mail anhängen, korrekt ist.
Hoffentlich hilft das,
quelle
Probier diese :
-(void)setProfilePic { NSArray *docpaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [docpaths objectAtIndex:0]; NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:@"Image.png"]; NSData *imgData = [[NSData alloc] initWithContentsOfURL:[NSURL fileURLWithPath:imagePath]]; UIImage *thumbNail = [[UIImage alloc] initWithData:imgData]; [profilePic_btn setBackgroundImage:thumbNail forState:UIControlStateNormal]; }
quelle