NSImageをガンマ値1.8に変換しようとしていますが、私は大したことはありません。私はいくつかのコードが見つかりましたが、何も動作していません。 NSBitmapImageRepをNSImageカテゴリに返すメソッドがあります。NSImageに1.8のガンマを適用します。
まず私は、私がオンラインで見つけるCGColorSpaceCreateCalibratedRGB機能付きカラースペースを変更しようとしたが、これは効果がありませんでした:
- (NSBitmapImageRep *)OnePointEightBitmapImageRep{
CGColorSpaceRef colorSpace = CGColorSpaceCreateCalibratedRGB(
(CGFloat[3]){0.9505, 1.0000, 1.0891},//white point
(CGFloat[3]){0.0000, 0.0000, 0.0000},//black point
(CGFloat[3]){1.8010, 1.8010, 1.8010},//gamma rgb
(CGFloat[9]){0.4543, 0.2426, 0.0148, 0.3533, 0.6744, 0.0904, 0.1566, 0.0834, 0.7195} //rgb tristimulus
);
CGImageRef imageRef = CGImageCreateCopyWithColorSpace([self CGImage], colorSpace);
NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc] initWithCGImage:imageRef];
CGColorSpaceRelease(colorSpace);
CGImageRelease(imageRef);
return bitmap;
}
- (CGImageRef)CGImage{
return [self CGImageForProposedRect:nil context:nil hints:nil];
}
次の私は、ビットマップ画像の性質上、ガンマを設定してみました:
- (NSBitmapImageRep *)OnePointEightBitmapImageRep{
NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc] initWithCGImage:[self CGImage]];
NSLog(@"gamma: %@", [bitmap valueForProperty:NSImageGamma]);
[bitmap setProperty:NSImageGamma withValue:[NSNumber numberWithDouble:1.8f]];
NSLog(@"gamma: %@", [bitmap valueForProperty:NSImageGamma]);
return bitmap;
}
これはプロパティを設定しますが、出力イメージには影響しません。
これを行う方法はありますか?
イメージをどのように出力していますか? –
このように: 'NSData * data = [ビットマップ表現型:NSPNGFileTypeプロパティ:nil]; [data writeToFile:@ " /image.png"アトミック:YES]; ' –
keegan3d