私はiOSで2年間、Macでは決してプログラミングしていません。私は自分のiOS開発で持っているシンプルなイメージニーズを処理するための小さなユーティリティーに取り組んでいます。とにかく、私は完璧に動作するiOSのコードを作業しているが、私は全く同等のものがMacのために何も考えていない。iOSからMac GraphicContext説明/変換
私はさまざまなことを試みましたが、実際には "drawRect:"メソッドの外でMac上でグラフィックスコンテキストを開始する方法を理解できません。 iPhoneでは、私はUIGraphicsBeghinImageContext()を使用します。私は他のポストがlockFocus/unlockFocusを使用すると言っていることを知っていますが、私のニーズにどのように正確にその仕事をするかはわかりません。ああ、私は本当にUIImageの "CGImage"プロパティが欠けています。私はNSImageがなぜそれを持つことができないのか理解していませんが、ちょうどそれより少し難解です。
UIImage *mask = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"Mask_Image.jpg" ofType:nil]];
UIImage *image = [UIImage imageNamed::@"Test_Image1.jpg"];
UIGraphicsBeginImageContextWithOptions(mask.size, NO, [[UIScreen mainScreen]scale]);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(ctx, 0.0, mask.size.height);
CGContextScaleCTM(ctx, 1.f, -1.f);
[image drawInRect:CGRectMake(0.f, -mask.size.height, image.size.width, image.size.height)];
UIImage *flippedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef maskRef = mask.CGImage;
CGImageRef maskCreate = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef masked = CGImageCreateWithMask([flippedImage CGImage], maskCreate);
CGImageRelease(maskCreate);
UIImage *maskedImage = [UIImage imageWithCGImage:masked];
CGImageRelease(masked);
UIGraphicsBeginImageContextWithOptions(CGSizeMake(image.size.width, image.size.height + (image.size.height * .5)), NO, [[UIScreen mainScreen]scale]);
[image drawInRect:CGRectMake(0,0, image.size.width, image.size.height)];
[maskedImage drawInRect:CGRectMake(0, image.size.height, maskedImage.size.width, maskedImage.size.height)];
UIImage *anotherImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//do something with anotherImage
任意の提案をMac上で(単に)これを達成するために:ここで
はそれだけでマスクから反射された画像を作成し、それらを一緒に組み合わせIOS-基本的に私の作業コードのですか?
のSwift3版:グラフィックスコンテキストを開始し '(CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]' – CodaFi
していますか?そうであれば、どうやってイメージをイメージに描画して取得するのですか(UIGraphicsGetImageFromCurrentImageContext()など)。また、どのようにNSImageとCGImageの間に行くのですか? – daveMac
スウィフトバージョンを追加しました:http://stackoverflow.com/a/34361216/1226095 –