Objective c 合并2个图像并保存它们

Objective c 合并2个图像并保存它们,objective-c,cocoa,Objective C,Cocoa,我试图在Cocoa中合并两个不同的图像,并希望将结果图像保存在我的应用程序中。到目前为止,我所做的是: -(void)mergeImage:(NSImage*)target withImage:(NSImage*)source { [target lockFocus]; NSPoint aPoint; aPoint.x = 1; aPoint.y = 1; [source drawAtPoint:aPoint fromRect:NSZeroRect op

我试图在Cocoa中合并两个不同的图像,并希望将结果图像保存在我的应用程序中。到目前为止,我所做的是:

-(void)mergeImage:(NSImage*)target withImage:(NSImage*)source {
    [target lockFocus];

    NSPoint aPoint;
    aPoint.x = 1;
    aPoint.y = 1;
    [source drawAtPoint:aPoint fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
    [target unlockFocus];

    NSBitmapImageRep *bmpImageRep = [[NSBitmapImageRep alloc]initWithData:[target TIFFRepresentation]];

    [target addRepresentation:bmpImageRep];

    NSData *data = [bmpImageRep representationUsingType: NSPNGFileType
                                             properties: nil];

    NSURL* aURL = [[NSBundle mainBundle] bundleURL];

    NSString *tmpPathToFile = [[NSString alloc] initWithString:[NSString stringWithFormat:@"%@/tempImage.png", aURL]];
    [data writeToFile:tmpPathToFile atomically:YES];
}
我没有收到任何错误,捆绑包的URL似乎是正确的。而“数据”的容量约为2,9MB 2985448

  • 你的应用程序是否已沙盒化?如果是这样,请确保它允许写入您要写入的目录
  • 已经有同名的文件了吗<代码>以原子方式不会覆盖它
  • 文件路径正确吗

  • 正如前面提到的,不允许写入应用程序包。
    但是,您可以写入应用程序支持文件夹。这就是它的用途。

    不允许(或不应该)写入应用程序包。他们被封起来是有原因的哦,好吧。这意味着临时数据也必须进入应用程序支持文件夹?@mightym这取决于您称之为临时的内容。如果它确实是临时的,可以在计算机关闭后删除,那么您可以使用一个特殊的临时目录。使用
    NSTemporaryDirectory()。或者,如果这是你的应用程序稍后将要使用的内容,你需要将其保存在应用程序支持文件夹中。啊,太好了!我不知道像NSTemporaryDirectory这样的东西存在。非常感谢您的支持!