CoreImageで指定画像をCIGaussianBlur


▲Original


▲Filtered Image

AppleScript名:CoreImageで指定画像をCIGaussianBlur
— Created 2017-03-21 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "QuartzCore"

–画像を選択
set aPath to POSIX path of (choose file of type {"public.image"})
set aNSImage to current application’s NSImage’s alloc()’s initWithContentsOfFile:aPath

set paramRec to {inputRadius:10.0}
set imgRes to execCIFilterWithNSImageAndParams(aNSImage, "CIGaussianBlur", paramRec) of me

set aDesktopPath to (current application’s NSProcessInfo’s processInfo()’s environment()’s objectForKey:("HOME"))’s stringByAppendingString:"/Desktop/"
set savePath to aDesktopPath’s stringByAppendingString:((current application’s NSUUID’s UUID()’s UUIDString())’s stringByAppendingString:".png")

set fRes to saveNSImageAtPathAsPNG(imgRes, savePath) of me

–NSImageをCIImageに変換してCIfilterを実行
on execCIFilterWithNSImageAndParams(aNSImage, aFilterName as string, paramRec as record)
  set aDict to current application’s NSDictionary’s dictionaryWithDictionary:paramRec
  
  
set aCIImage to convNSImageToCIimage(aNSImage) of me
  
set aFilter to current application’s CIFilter’s filterWithName:aFilterName
  
  
aFilter’s setDefaults()
  
aFilter’s setValue:aCIImage forKey:"inputImage"
  
set aOutImage to aFilter’s valueForKey:"outputImage"
  
  
set keyList to aDict’s allKeys() as list
  
repeat with i in keyList
    set aVal to (aDict’s valueForKey:i) as list of string or string –as anything
    (
aFilter’s setValue:aVal forKey:(i as string))
  end repeat
  
  
set newNSImage to convCIimageToNSImage(aOutImage) of me
  
return newNSImage
end execCIFilterWithNSImageAndParams

on convCIimageToNSImage(aCIImage)
  set aRep to current application’s NSBitmapImageRep’s alloc()’s initWithCIImage:aCIImage
  
set tmpSize to aRep’s |size|()
  
set newImg to current application’s NSImage’s alloc()’s initWithSize:tmpSize
  
newImg’s addRepresentation:aRep
  
return newImg
end convCIimageToNSImage

on convNSImageToCIimage(aNSImage)
  set tiffDat to aNSImage’s TIFFRepresentation()
  
set aRep to current application’s NSBitmapImageRep’s imageRepWithData:tiffDat
  
set newImg to current application’s CIImage’s alloc()’s initWithBitmapImageRep:aRep
  
return newImg
end convNSImageToCIimage

–NSImageを指定パスにPNG形式で保存
on saveNSImageAtPathAsPNG(anImage, outPath)
  set imageRep to anImage’s TIFFRepresentation()
  
set aRawimg to current application’s NSBitmapImageRep’s imageRepWithData:imageRep
  
set pathString to current application’s NSString’s stringWithString:outPath
  
set newPath to pathString’s stringByExpandingTildeInPath()
  
set myNewImageData to (aRawimg’s representationUsingType:(current application’s NSPNGFileType) |properties|:(missing value))
  
set aRes to (myNewImageData’s writeToFile:newPath atomically:true) as boolean
  
return aRes –成功ならtrue、失敗ならfalseが返る
end saveNSImageAtPathAsPNG

★Click Here to Open This Script 

Please follow and like us:

コメントを残す

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