72

NSBundle& DocumentDirectory データを理解するのに問題があります。保存しているカメラ画像「 imageView」がNSDocumentDirectoyあり、それを取得してメールに添付したいと考えています。

ここに保存コード:

- (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];   
}

新しい取得データ コードは次のとおりです。

    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"];
4

4 に答える 4

66
- (IBAction)getImage {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
    UIImage *img = [UIImage imageWithContentsOfFile:getImagePath];
}

これで始められるはずです!

于 2010-01-10T16:14:47.373 に答える
5

スイフト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
// ...

簡潔にするために、一部のオプションを強制的にアンラップします。guardコードでorを使用if letします。

于 2016-02-06T11:46:23.963 に答える
0

各 iPhone アプリは独自のサンドボックスにあるため、デバイス全体のドキュメント フォルダーにアクセスすることはできません。画像を電子メールに添付するには、画像を自分のドキュメント フォルダーに保存します。[@"~/Documents" StringByExpandingTildeInPath]を使用して、ローカル ドキュメント フォルダーを取得してみてください。画像をメールに添付するために使用している手法は正しいようです。

それが役立つことを願って、

于 2010-01-10T15:34:31.330 に答える