Ios 如何使用原始元数据保存修改后的UIImage?

Ios 如何使用原始元数据保存修改后的UIImage?,ios,objective-c,uiimage,Ios,Objective C,Uiimage,在我的iOS应用程序中,我必须对UIImage进行一些修改,例如在其上添加水印。之后,我想用原始元数据保存图像,但如果我尝试使用writeImageDataToSavedPhotosAlbum:metadata:completionBlock:,则生成的图像中没有任何内容 因为我必须修改图像,所以我必须使用以下方法传递元数据:部分的NSData:UIImageJPEGRepresentationUIImage*,float 在保存图像之前,元数据如下所示: Meta: { Apertur

在我的iOS应用程序中,我必须对UIImage进行一些修改,例如在其上添加水印。之后,我想用原始元数据保存图像,但如果我尝试使用writeImageDataToSavedPhotosAlbum:metadata:completionBlock:,则生成的图像中没有任何内容

因为我必须修改图像,所以我必须使用以下方法传递元数据:部分的NSData:UIImageJPEGRepresentationUIImage*,float

在保存图像之前,元数据如下所示:

Meta: {
    ApertureValue = "2.526068811667587";
    BrightnessValue = "-1.807443054797895";
    ExposureMode = 0;
    ExposureProgram = 2;
    ExposureTime = "0.05882352941176471";
    FNumber = "2.4";
    Flash = 16;
    FocalLenIn35mmFilm = 33;
    FocalLength = "4.12";
    ISOSpeedRatings =     (
        800
    );
    LensMake = Apple;
    LensModel = "iPhone 5c back camera 4.12mm f/2.4";
        LensSpecification =     (
        "4.12",
        "4.12",
        "2.4",
        "2.4"
    );
    MeteringMode = 3;
    PixelXDimension = 3264;
    PixelYDimension = 2448;
    SceneType = 1;
    SensingMethod = 2;
    ShutterSpeedValue = "4.058917734171294";
    WhiteBalance = 0;
    "{GPS}" =     {
        Altitude = "147.9932";
        DOP = "76.42908";
        Latitude = "45.7398";
        LatitudeRef = N;
        Longitude = "126.6266";
        LongitudeRef = E;
        TimeStamp = "2013:12:23 08:45:30";
    };
那么,这里怎么了?

试试这个

UIImage *newImage = self.yourOriginalImage;

UIImage *anotherImage = @"waterMark.png";
CGImageRef imageRef = anotherImage.CGImage;

CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(imageRef),
                                        CGImageGetHeight(imageRef),
                                        CGImageGetBitsPerComponent(imageRef),
                                        CGImageGetBitsPerPixel(imageRef),
                                        CGImageGetBytesPerRow(imageRef),
                                        CGImageGetDataProvider(imageRef), NULL, false);

CGImageRef maskedImage = CGImageCreateWithMask([newImage CGImage], mask);
self.imageView.image = [UIImage imageWithCGImage: maskedImage];

假设您有一个名为myEditedImage的UIImage以及NSDictionary或NSMutableDictionary中的元数据。。。称为元数据:

ALAssetsLibrary *library;
ALAssetsLibraryWriteImageCompletionBlock completionBlock = ^(NSURL *assetURL, NSError *error) {};
float compressionLevel = 0.75; // Or whatever you want
NSData *dataIn = UIImageJPEGRepresentation(myEditedImage, compressionLevel);
[library writeImageDataToSavedPhotosAlbum: dataIn
     metadata: metadata
     completionBlock:completionBlock];

你有例外吗?有控制台日志输出吗?写图像的实际代码执行了吗?没有,没有任何异常..嗯,我没有完全理解。。这段代码似乎在imageView上显示图像,但我需要的是将图像保存到图像文件中。