2012-12-22 63 views
1

即時通訊試圖合併Cocoa中的2個不同圖像,並將結果圖像保存在我的應用程序中。我所做的迄今爲止是這樣的:可可合併2圖像並保存它們

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

我沒有得到任何錯誤,網站的網址似乎是正確的。並且「數據」保留〜2,9MB 2985448

+2

您沒有(或不應該)被允許寫入應用程序包。他們被密封的原因 – CodaFi

回答

2
  1. 您的應用是否爲沙盒?如果是這樣,請確保它確實允許寫入您正在寫入的目錄。
  2. 是否已有一個具有相同名稱的文件? atomically不會覆蓋它。
  3. 文件路徑是否正確?

就像CodaFi提到它,你不能寫入應用程序包。 但是,您可以寫入應用程序支持文件夾。這就是它的目的。

+0

哦,好的。這意味着臨時數據必須進入應用程序支持文件夾? – mightym

+1

@mightym這取決於你所稱的臨時。如果它真的是臨時的,可以在計算機關閉後刪除,則可以使用特殊的臨時目錄。使用'NSTemporaryDirectory();'。或者,如果這是您的應用稍後使用的內容,則需要將其保存在應用程序支持文件夾中。 – NSAddict

+0

啊完美!我不知道那件事。像NSTemporaryDirectory存在。非常感謝! – mightym