ColorCubeによる頻出色の抽出

ColorCube.frameworkを呼び出して、指定画像の頻出色を抽出するAppleScriptです。

抽出した色数をダイアログ表示したあとに、抽出した色をchoose colorダイアログで抽出色分だけプレビューします。JPEG画像からの色抽出はうまくできましたが、透過色つきのPNG画像の演算結果は納得行かないものがありました。JPEG推奨です。

ColorCubeには除外色の指定を明示的に(flagsではなく)指定できるはずですが、NSColor’s whiteColor()などで指定してもエラーになったので、flagsによる制御を推奨します。

–> ColorCube.framework

AppleScript名:ColorCubeによる頻出色の抽出
— Created 2018-02-05 by Takaaki Naganoya
— 2018 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "AppKit"
use framework "ColorCube" –https://github.com/pixelogik/ColorCube

property CCOnlyBrightColors : 1
property CCOnlyDarkColors : 2
property CCOnlyDistinctColors : 4
property CCOrderByBrightness : 8
property CCOrderByDarkness : 16
property CCAvoidWhite : 32
property CCAvoidBlack : 64

–List up frequent colors from image
set aFile to POSIX path of (choose file of type {"public.image"})
set targImage to current application’s NSImage’s alloc()’s initWithContentsOfFile:aFile
set colorCube to current application’s CCColorCube’s alloc()’s init()

–set imgColors to (colorCube’s extractColorsFromImage:targImage flags:(CCOnlyDistinctColors + CCAvoidWhite)) as list
set imgColors to (colorCube’s extractColorsFromImage:targImage flags:(CCAvoidWhite) |count|:4) as list

display dialog (length of imgColors) as string

repeat with i in imgColors
  set r2Val to i’s redComponent()
  
set g2Val to i’s greenComponent()
  
set b2Val to i’s blueComponent()
  
set a2Val to i’s alphaComponent()
  
  
set r2Val to r2Val * 65535
  
set g2Val to g2Val * 65535
  
set b2Val to b2Val * 65535
  
  
choose color default color {r2Val, g2Val, b2Val}
end repeat

★Click Here to Open This Script 

Please follow and like us:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です