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