您可以使用
CGContextSetBlendMode(kCGBlendModeDifference);
通過繪製第一幅圖像,然後將混合模式設置爲差值並繪製第二幅圖像,您將獲得差異(正如我在我的評論中所建議的那樣)。這給你一個倒像(如你的更新問題所示)。要反轉圖像,可以使用白色填充相同的矩形(因爲混合模式仍設置爲「差異」)。
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0);
CGContextFillRect(context, frame);
示例代碼做這一切(內部的drawRect :)下邊可見。
CGContextRef context = UIGraphicsGetCurrentContext();
// Your two images
CGImageRef img1 = [[UIImage imageNamed:@"Ygsvt.png"] CGImage];
CGImageRef img2 = [[UIImage imageNamed:@"ay5DB.png"] CGImage];
// Some arbitrary frame
CGRect frame = CGRectMake(30, 30, 100, 100);
// Invert the coordinates to not draw upside down
CGContextTranslateCTM(context, 0, frame.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
// Draw original image
CGContextDrawImage(context, frame, img1);
// Draw the second image using difference blend more over the first
CGContextSetBlendMode(context, kCGBlendModeDifference);
CGContextDrawImage(context, frame, img2);
// Fill the same rect with white color to invert
// (still difference blend mode)
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0);
CGContextFillRect(context, frame);
接受的答案解決方案在http ://stackoverflow.com/questions/3901404/create-a-mask-from-difference-between-two-images-iphone看起來像它可以幫助。 –
@rokjarc感謝您的鏈接,但差異混合模式並不是我的情況的解決方案,只是更新示例圖像來演示它。 – deimus
如果您在設置'CGContextSetBlendMode(kCGBlendModeDifference)後只是將一個圖像繪製到另一個圖像上,會發生什麼情況?'這不會給您以後的樣子嗎? –