1

サー、ここでメタデータから uiimage に地理位置情報を追加する必要がありますが、追加した後はフォトアルバムにのみ読み込みますが、ここではその画像が必要です。ここにソースコードを追加しました

- (void) saveImage:(UIImage *)imageToSave withInfo:(NSDictionary *)info
{
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];


        // Get the image metadata (EXIF & TIFF)    
    NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
    [defaults objectForKey:latkey];
    float longitude=[defaults floatForKey:longkey];
    float latitude=[defaults floatForKey:latkey];    
    CLLocation * loc=[[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
    NSMutableDictionary *metaDict = nil;
    if ([info objectForKey:UIImagePickerControllerOriginalImage] != nil) {
        metaDict = [NSMutableDictionary dictionaryWithDictionary:[info objectForKey:UIImagePickerControllerMediaMetadata]];
        NSDictionary *gpsDict = [self currentLocation:loc];
        if ([gpsDict count] > 0) {
            [metaDict setObject:gpsDict forKey:(NSString*)kCGImagePropertyGPSDictionary];
        }
    }
    [library writeImageToSavedPhotosAlbum:[imageToSave CGImage] metadata:metaDict completionBlock:^(NSURL *newURL, NSError *error) {
        if (error) {

        } else {
        }
    }];

    NSLog(@"metaDict  :%@",metaDict);


    NSURL *referenceURL = [info objectForKey:UIImagePickerControllerReferenceURL];
    [library assetForURL:referenceURL resultBlock:^(ALAsset *asset) {
        ALAssetRepresentation *rep = [asset defaultRepresentation];
        NSDictionary *metadata = rep.metadata;
        NSLog(@"%@", metadata);

        CGImageRef iref = [rep fullScreenImage] ;

        if (iref) {
            capturedImage.image = [UIImage imageWithCGImage:iref];
        }
    } failureBlock:^(NSError *error) {
            // error handling
    }];
}

現在の地理的位置の EXIF フィールドを作成します。

- (NSMutableDictionary*)currentLocation:(CLLocation *)location{
    NSMutableDictionary *locDict = [[NSMutableDictionary alloc] init];

    if (location != nil) {
        CLLocationDegrees exifLatitude = location.coordinate.latitude;
        CLLocationDegrees exifLongitude = location.coordinate.longitude;

        [locDict setObject:location.timestamp forKey:(NSString*)kCGImagePropertyGPSTimeStamp];

        if (exifLatitude < 0.0) {
            exifLatitude = exifLatitude*(-1);
            [locDict setObject:@"S" forKey:(NSString*)kCGImagePropertyGPSLatitudeRef];
        } else {
            [locDict setObject:@"N" forKey:(NSString*)kCGImagePropertyGPSLatitudeRef];
        }
        [locDict setObject:[NSNumber numberWithFloat:exifLatitude] forKey:(NSString*)kCGImagePropertyGPSLatitude];

        if (exifLongitude < 0.0) {
            exifLongitude=exifLongitude*(-1);
            [locDict setObject:@"W" forKey:(NSString*)kCGImagePropertyGPSLongitudeRef];
        } else {
            [locDict setObject:@"E" forKey:(NSString*)kCGImagePropertyGPSLongitudeRef];
        }
        [locDict setObject:[NSNumber numberWithFloat:exifLongitude] forKey:(NSString*) kCGImagePropertyGPSLongitude];
    }

    return [locDict autorelease];
}

私を助けてください

4

1 に答える 1

1

EDIT :このリンクをたどると、写真アルバムに画像を追加できます。

アセットがある場合、アセットの作成日を使用して、フォトアルバムに追加する前に、このように最後に追加された写真を保存日として知ることができます:

NSDate *imgCreateddate = [asset valueForProperty:ALAssetPropertyDate];
if(imgCreateddate isGreaterThan savedDate)
{
  last Photo;
}

iOS イメージへのメタデータの追加の簡単な方法のリンクを参照してください。

サンプル コードについては、GusUtilsを参照してください。

写真付き保存ジオタグ情報リンクを参照

于 2012-09-04T08:50:17.923 に答える