LoginSignup
15
16

More than 5 years have passed since last update.

画像の平均色を出す

Last updated at Posted at 2013-12-11

画像1の色の傾向を知る方法はないかしらんと調べていたときに、画像を1ピクセルサイズに縮小してその1ピクセルの色を読む、という方法を Stack Overflow2 で見つけてなんかすごくスマートに感じたので採用することにした。

厳密な値は求めてないしコードをたくさん書きたくないので、縮小は簡単に済ませることに。iOSのことは知りません。

Foo.m
+ (NSColor *)averageColor:(NSBitmapImageRep *)bitmapRep
{
    // put image in 1 pixel rect
    NSImage *pixel  = [[NSImage alloc] initWithSize:NSMakeSize(1, 1)];
    [pixel lockFocus];
    [bitmapRep drawInRect:NSMakeRect(0, 0, 1, 1)];
    [pixel unlockFocus];
    NSBitmapImageRep *pixelRep = [[NSBitmapImageRep alloc] initWithData:[pixel TIFFRepresentation]];

    // read averaged color
    NSColor *color = [pixelRep colorAtX:0 y:0];

    return color;
}

できた。

ちなみに今回は白っぽいか黒っぽいか知りたかっただけなので、さらにここから輝度を取り出した。

CGFloat brightness = [[Foo averageColor:imageRep]  brightnessComponent];

--
1. というか今回はWebViewだったんだけど
2. memory management - How do I release a CGImageRef in iOS - Stack Overflow

15
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
16