import objc from Foundation import * ACScriptSuperMenuTitle = None ACScriptMenuTitle = "My Simple Filter" CIImage = objc.lookUpClass( 'CIImage' ) CIFilter = objc.lookUpClass( 'CIFilter' ) CIKernel = objc.lookUpClass( 'CIKernel' ) CISampler = objc.lookUpClass( 'CISampler' ) kernelCode = """ kernel vec4 test(sampler src) { return sample(src,samplerCoord(src))*0.5; } """ def main(image): kernels = CIKernel.kernelsWithString_( kernelCode ) kernel = kernels.objectAtIndex_(0) sampler = CISampler.samplerWithImage_( image ) filter = CIFilter.alloc().init() imageExtent = image.extent() image = filter.apply_arguments_options_(kernel,[sampler,None],None) # This part can be skipped with the latest Acorn - Gus added a fix. (Thanks, Gus!) theCropVector = CIVector.vectorWithX_Y_Z_W_(0.0, 0.0, imageExtent[1][0], imageExtent[1][1]) cropFilter = CIFilter.filterWithName_("CICrop") cropFilter.setValue_forKey_(theCropVector, "inputRectangle") cropFilter.setValue_forKey_(image, "inputImage") image = cropFilter.valueForKey_("outputImage") return image