指定のNSImageをグレースケール画像にしたのちNSImageで出力するAppleScriptです。
GPUImageをプログラムから取り外すにあたって必要になったので用意しました。ふだん、画像変換系のScriptはNSImageで入力したのちにファイルに出力するように組んであったのですが、入出力ともにNSImageにしてあるプログラムが手元に存在していなかったので。
GPUImageが自分にとって使いやすかったのは、入出力にNSImageが使えたからだと思います。CGImageだとAppleScriptからアクセスできないですし、CIImageもアクセスできないわけではないですが、ちょっと遠回りになります。
AppleScript名:指定のNSImageをグレースケールに |
— Created 2019-07-09 by Takaaki Naganoya — 2019 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" property NSString : a reference to current application’s NSString property NSImage : a reference to current application’s NSImage property NSColorSpace : a reference to current application’s NSColorSpace property NSBitmapImageRep : a reference to current application’s NSBitmapImageRep property NSColorRenderingIntentPerceptual : a reference to current application’s NSColorRenderingIntentPerceptual set aFile to POSIX path of (choose file of type {"public.image"} with prompt "Select Image A") set aImage to NSImage’s alloc()’s initWithContentsOfFile:aFile set gImage to convNSIMageAsGray(aImage) of me –NSImageをグレースケールに変換してNSImageで返す on convNSIMageAsGray(anImage) set imageRep to anImage’s TIFFRepresentation() set aRawimg to NSBitmapImageRep’s imageRepWithData:imageRep set bRawimg to convBitMapToDeviceGrey(aRawimg) of me set bImage to NSImage’s alloc()’s initWithSize:(bRawimg’s |size|()) bImage’s addRepresentation:bRawimg return bImage end convNSIMageAsGray –NSBitmapImageRepをグレースケールに変換する on convBitMapToDeviceGrey(aBitmap) set aSpace to NSColorSpace’s deviceGrayColorSpace() set bRawimg to aBitmap’s bitmapImageRepByConvertingToColorSpace:aSpace renderingIntent:(NSColorRenderingIntentPerceptual) return bRawimg end convBitMapToDeviceGrey |