private void Pointalize() { CIVector center = CIVector.Create(Bounds.GetMidX(), Bounds.GetMidY()); CIFilter pointalize = CIFilter.FromName("CIPointillize"); pointalize.SetValueForKey(NSNumber.FromFloat(1), CIFilterInputKey.Radius); pointalize.SetValueForKey(center, CIFilterInputKey.Center); controls.ContentFilters = new CIFilter[] { pointalize }; }
CIImage CreateQRForString(NSString qrString, QRCodeCorrectionLevel level) { NSData strData = qrString.Encode(NSStringEncoding.UTF8); // 创建filter CIFilter qrFilter = CIFilter.FromName("CIQRCodeGenerator"); // 设置内容和纠错级别 qrFilter.SetValueForKey(strData, new NSString("inputMessage")); qrFilter.SetValueForKey(new NSString(level.ToString()), new NSString("inputCorrectionLevel")); // 返回CIImage return(qrFilter.OutputImage); }
private UIImage TransformeImage(UIImage image, CIImageOrientation orientation) { CIImage inputImage = CIImage.FromCGImage(image.CGImage); inputImage = inputImage.CreateWithOrientation(orientation); ciFilter.SetValueForKey(inputImage, CIFilterInputKey.Image); CIImage outputImage = ciFilter.OutputImage; using (CGImage cgImage = ciContext.CreateCGImage(outputImage, outputImage.Extent)) return(UIImage.FromImage(cgImage)); }
public static NSImage Tint(this NSImage image, NSColor tint) { CIFilter colorGenerator = CIFilter.FromName("CIConstantColorGenerator"); CIColor color = CIColor.FromCGColor(tint.ToCG()); colorGenerator.SetValueForKey(color, CIFilterInputKey.Color); CIFilter colorFilter = CIFilter.FromName("CIColorControls"); colorFilter.SetValueForKey(colorGenerator.ValueForKey(CIFilterOutputKey.Image), CIFilterInputKey.Image); colorFilter.SetValueForKey(NSNumber.FromFloat(3f), CIFilterInputKey.Saturation); colorFilter.SetValueForKey(NSNumber.FromFloat(0.35f), CIFilterInputKey.Brightness); colorFilter.SetValueForKey(NSNumber.FromFloat(1f), CIFilterInputKey.Contrast); CIFilter monochromeFilter = CIFilter.FromName("CIColorMonochrome"); CIImage baseImage = CIImage.FromCGImage(image.CGImage); monochromeFilter.SetValueForKey(baseImage, CIFilterInputKey.Image); monochromeFilter.SetValueForKey(CIColor.FromRgb(0.75f, 0.75f, 0.75f), CIFilterInputKey.Color); monochromeFilter.SetValueForKey(NSNumber.FromFloat(1f), CIFilterInputKey.Intensity); CIFilter compositingFilter = CIFilter.FromName("CIMultiplyCompositing"); compositingFilter.SetValueForKey(colorFilter.ValueForKey(CIFilterOutputKey.Image), CIFilterInputKey.Image); compositingFilter.SetValueForKey(monochromeFilter.ValueForKey(CIFilterOutputKey.Image), CIFilterInputKey.BackgroundImage); CIImage outputImage = (CIImage)compositingFilter.ValueForKey(CIFilterOutputKey.Image); var extent = outputImage.Extent; var newsize = sd.Size.Truncate(extent.Size); var tintedImage = new NSImage(newsize); var newrep = new NSBitmapImageRep(IntPtr.Zero, newsize.Width, newsize.Height, 8, 4, true, false, NSColorSpace.DeviceRGB, 4 * newsize.Width, 32); tintedImage.AddRepresentation(newrep); var graphics = NSGraphicsContext.FromBitmap(newrep); NSGraphicsContext.GlobalSaveGraphicsState(); NSGraphicsContext.CurrentContext = graphics; var ciContext = CIContext.FromContext(graphics.GraphicsPort, new CIContextOptions { UseSoftwareRenderer = true }); ciContext.DrawImage(outputImage, extent, extent); NSGraphicsContext.GlobalRestoreGraphicsState(); newrep.Size = image.Size; return(tintedImage); }
void tintAdjusted(UISlider sender) { var filter = ciRawFilter; if (filter == null) { return; } ciRawFilter.SetValueForKey(NSNumber.FromFloat(sender.Value), Keys.kCIInputNeutralTintKey); ImageView.SetNeedsDisplay(); }