public IImage LoadImage(Stream stream) { var mem = new MemoryStream((int)stream.Length); stream.CopyTo(mem); unsafe { #if NET45 fixed(byte *x = mem.GetBuffer()) #else ArraySegment <byte> segment; if (!mem.TryGetBuffer(out segment)) { throw new Exception("Could not get buffer from stream."); } fixed(byte *x = segment.Array) #endif { var provider = new CGDataProvider(new IntPtr(x), (int)mem.Length, false); var image = CGImage.FromPNG(provider, null, false, CGColorRenderingIntent.Default) ?? CGImage.FromJPEG(provider, null, false, CGColorRenderingIntent.Default); return(new CGImageImage(image, 1)); } } }
public override void LoadTexture(Texture t) { string path = NSBundle.MainBundle.PathForResource(Path.GetFileNameWithoutExtension(t.Name), "png"); CGDataProvider dataProvider = null; CGImage image = null; try { dataProvider = CGDataProvider.FromFile(path); image = CGImage.FromPNG(dataProvider, null, false, CGColorRenderingIntent.Default); LoadTextureFromImage(t, image); } catch (Exception) { t.Failed = true; return; } finally { if (dataProvider != null) { dataProvider.Dispose(); } if (image != null) { image.Dispose(); } } }
// Angle For The Quad ( NEW ) public Scene() : base() { GL.GenTextures(1, textures); GL.BindTexture(TextureTarget.Texture2D, textures [0]); image = CGImage.FromPNG(new CGDataProvider("/tmp/Mono.png"), null, true, CGColorRenderingIntent.Default); Console.WriteLine(image); }
public void ImagesTest() { string file = Path.Combine(NSBundle.MainBundle.ResourcePath, "basn3p08.png"); using (var dp = new CGDataProvider(file)) { using (var cgimg = CGImage.FromPNG(dp, null, false, CGColorRenderingIntent.Default)) { using (var img = new UIImage(cgimg)) { UIPasteboard.General.Images = new UIImage[] { img }; if (TestRuntime.CheckXcodeVersion(8, 0)) { Assert.True(UIPasteboard.General.HasImages, "HasImages"); } // https://github.com/xamarin/xamarin-macios/issues/6254 if (TestRuntime.CheckXcodeVersion(11, 0)) { return; } Assert.AreEqual(1, UIPasteboard.General.Images.Length, "a - length"); UIPasteboard.General.Images = new UIImage[] { img, img }; Assert.AreEqual(2, UIPasteboard.General.Images.Length, "b - length"); Assert.IsNotNull(UIPasteboard.General.Images [0], "b - nonnull[0]"); Assert.IsNotNull(UIPasteboard.General.Images [1], "b - nonnull[0]"); } } } }
public byte[] ImageToBinary(string sImg) { CGDataProvider dataProvider = new CGDataProvider(sImg); var rbitmap = CGImage.FromPNG(dataProvider, null, false, CGColorRenderingIntent.Default); if (rbitmap == null) { return(null); } UIImage uiImage = UIImage.FromImage(rbitmap); if (uiImage == null) { return(null); } NSData nsData = uiImage.AsPNG(); if (nsData == null) { return(null); } return(nsData.ToArray()); }
public void Indexed_Provider() { string file = Path.Combine(NSBundle.MainBundle.ResourcePath, "basn3p08.png"); using (var dp = new CGDataProvider(file)) { using (var img = CGImage.FromPNG(dp, null, false, CGColorRenderingIntent.Default)) { CheckIndexedFile(img); } } }
public void LoadImageSource(string sImg) { CGDataProvider dataProvider = new CGDataProvider(sImg); var rbitmap = CGImage.FromPNG(dataProvider, null, false, CGColorRenderingIntent.Default); if (rbitmap != null) { iOSbitmap = UIImage.FromImage(rbitmap); } }
public void FromPNG() { string file = Path.Combine(NSBundle.MainBundle.ResourcePath, "basn3p08.png"); using (var dp = CGDataProvider.FromFile(file)) using (var img = CGImage.FromPNG(dp, null, false, CGColorRenderingIntent.Default)) { Assert.That((int)img.Height, Is.EqualTo(32), "Height"); Assert.That((int)img.Width, Is.EqualTo(32), "Width"); } }
public void FromPNG () { string file = Path.Combine (NSBundle.MainBundle.ResourcePath, "basn3p08.png"); using (var dp = new CGDataProvider (file)) using (var img = CGImage.FromPNG (dp, null, false, CGColorRenderingIntent.Default)) using (var ui = new UIImage (img, 1.0f, UIImageOrientation.Up)) { Assert.IsNotNull (ui.CGImage, "CGImage"); if (TestRuntime.CheckXcodeVersion (7, 0)) Assert.That (img.UTType.ToString (), Is.EqualTo ("public.png"), "UTType"); } }
public static NSImage ToNSImage(this Image img) { MemoryStream s = new MemoryStream(); img.Save(s, System.Drawing.Imaging.ImageFormat.Png); byte[] b = s.ToArray(); CGDataProvider dp = new CGDataProvider(b, 0, (int)s.Length); s.Flush(); s.Close(); CGImage img2 = CGImage.FromPNG(dp, null, false, CGColorRenderingIntent.Default); return(new NSImage(img2, new SizeF(img2.Width, img2.Height))); }
public IImage LoadImage(string path) { var provider = new CGDataProvider(path); CGImage image; if (System.IO.Path.GetExtension(path).ToLowerInvariant() == ".png") { image = CGImage.FromPNG(provider, null, false, CGColorRenderingIntent.Default); } else { image = CGImage.FromJPEG(provider, null, false, CGColorRenderingIntent.Default); } return(new CGImageImage(image, 1)); }
public IImage LoadImage(Stream stream) { var mem = new MemoryStream((int)stream.Length); stream.CopyTo(mem); unsafe { fixed(byte *x = mem.GetBuffer()) { var provider = new CGDataProvider(new IntPtr(x), (int)mem.Length, false); var image = CGImage.FromPNG(provider, null, false, CGColorRenderingIntent.Default); return(new CGImageImage(image, 1)); } } }
private NSImage LoadStream(System.IO.Stream s) { using (var ms = new MemoryStream()) { s.CopyTo(ms); ms.Flush(); ms.Close(); var b = ms.ToArray(); var dp = new CGDataProvider(b, 0, b.Length); var img2 = CGImage.FromPNG(dp, null, false, CGColorRenderingIntent.Default); return(new NSImage(img2, new System.Drawing.SizeF(18, 18))); } }
public void Pasteboard_ImagesTest () { string file = Path.Combine (NSBundle.MainBundle.ResourcePath, "basn3p08.png"); using (var dp = new CGDataProvider (file)) { using (var cgimg = CGImage.FromPNG (dp, null, false, CGColorRenderingIntent.Default)) { using (var img = new UIImage (cgimg)) { UIPasteboard.General.Images = new UIImage[] { img }; Assert.AreEqual (1, UIPasteboard.General.Images.Length, "a - length"); UIPasteboard.General.Images = new UIImage[] { img, img }; Assert.AreEqual (2, UIPasteboard.General.Images.Length, "b - length"); Assert.IsNotNull (UIPasteboard.General.Images [0], "b - nonnull[0]"); Assert.IsNotNull (UIPasteboard.General.Images [1], "b - nonnull[0]"); } } } }
public bool ReadFile(String fileName, Mat mat, CvEnum.ImreadModes loadType) { try { using (CGDataProvider provider = new CGDataProvider(fileName)) using (CGImage tmp = CGImage.FromPNG(provider, null, false, CGColorRenderingIntent.Default)) { CGImageExtension.ConvertCGImageToArray(tmp, mat, loadType); } return(true); } catch (Exception e) { Debug.WriteLine(e); //throw; return(false); } }
public BitmapImplementation(Stream stream) { byte[] data; using (var ms = new MemoryStream()) { stream.CopyTo(ms); data = ms.ToArray(); } cgImage = CGImage.FromPNG(new CGDataProvider(data), null, false, CGColorRenderingIntent.Default); if (cgImage == null) { cgImage = CGImage.FromJPEG(new CGDataProvider(data), null, false, CGColorRenderingIntent.Default); } var alphaInfo = cgImage.AlphaInfo; HasAlpha = alphaInfo != CGImageAlphaInfo.None && alphaInfo != CGImageAlphaInfo.NoneSkipFirst && alphaInfo != CGImageAlphaInfo.NoneSkipLast; }
public void InitializationWithCustomMetadata() { string file = Path.Combine(NSBundle.MainBundle.ResourcePath, "basn3p08.png"); using (var dp = new CGDataProvider(file)) { using (var img = CGImage.FromPNG(dp, null, false, CGColorRenderingIntent.Default)) { var opt = new CIImageInitializationOptionsWithMetadata() { Properties = new CGImageProperties() { ProfileName = "test profile name" } }; using (var ci = new CIImage(img, opt)) { Assert.AreEqual("test profile name", ci.Properties.ProfileName); } } } }
public override void LoadTextureStream(Texture t, System.IO.Stream stream) { NSData data = null; CGDataProvider dataProvider = null; CGImage image = null; try { data = NSData.FromStream(stream); if (data != null) { dataProvider = new CGDataProvider(data); image = CGImage.FromPNG(dataProvider, null, false, CGColorRenderingIntent.Default); LoadTextureFromImage(t, image); } else { t.Failed = true; return; } } catch (Exception) { t.Failed = true; return; } finally { if (dataProvider != null) { dataProvider.Dispose(); } if (data != null) { data.Dispose(); } } }
protected INativeObject GetINativeInstance(Type t) { var ctor = t.GetConstructor(Type.EmptyTypes); if ((ctor != null) && !ctor.IsAbstract) { return(ctor.Invoke(null) as INativeObject); } if (!NativeObjectInterfaceType.IsAssignableFrom(t)) { throw new ArgumentException("t"); } switch (t.Name) { case "CFAllocator": return(CFAllocator.SystemDefault); case "CFBundle": var bundles = CFBundle.GetAll(); if (bundles.Length > 0) { return(bundles [0]); } else { throw new InvalidOperationException(string.Format("Could not create the new instance for type {0}.", t.Name)); } case "CFNotificationCenter": return(CFNotificationCenter.Darwin); case "CFReadStream": case "CFStream": CFReadStream readStream; CFWriteStream writeStream; CFStream.CreatePairWithSocketToHost("www.google.com", 80, out readStream, out writeStream); return(readStream); case "CFWriteStream": CFStream.CreatePairWithSocketToHost("www.google.com", 80, out readStream, out writeStream); return(writeStream); case "CFUrl": return(CFUrl.FromFile("/etc")); case "CFPropertyList": return(CFPropertyList.FromData(NSData.FromString("<string>data</string>")).PropertyList); case "DispatchData": return(DispatchData.FromByteBuffer(new byte [] { 1, 2, 3, 4 })); case "AudioFile": var path = Path.GetFullPath("1.caf"); var af = AudioFile.Open(CFUrl.FromFile(path), AudioFilePermission.Read, AudioFileType.CAF); return(af); case "CFHTTPMessage": return(CFHTTPMessage.CreateEmpty(false)); case "CFMutableString": return(new CFMutableString("xamarin")); case "CGBitmapContext": byte[] data = new byte [400]; using (CGColorSpace space = CGColorSpace.CreateDeviceRGB()) { return(new CGBitmapContext(data, 10, 10, 8, 40, space, CGBitmapFlags.PremultipliedLast)); } case "CGContextPDF": var filename = Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments) + "/t.pdf"; using (var url = new NSUrl(filename)) return(new CGContextPDF(url)); case "CGColorConversionInfo": var cci = new GColorConversionInfoTriple() { Space = CGColorSpace.CreateGenericRgb(), Intent = CGColorRenderingIntent.Default, Transform = CGColorConversionInfoTransformType.ApplySpace }; return(new CGColorConversionInfo((NSDictionary)null, cci, cci, cci)); case "CGDataConsumer": using (NSMutableData destData = new NSMutableData()) { return(new CGDataConsumer(destData)); } case "CGDataProvider": filename = "xamarin1.png"; return(new CGDataProvider(filename)); case "CGFont": return(CGFont.CreateWithFontName("Courier New")); case "CGPattern": return(new CGPattern( new RectangleF(0, 0, 16, 16), CGAffineTransform.MakeIdentity(), 16, 16, CGPatternTiling.NoDistortion, true, (cgc) => {})); case "CMBufferQueue": return(CMBufferQueue.CreateUnsorted(2)); case "CTFont": CTFontDescriptorAttributes fda = new CTFontDescriptorAttributes() { FamilyName = "Courier", StyleName = "Bold", Size = 16.0f }; using (var fd = new CTFontDescriptor(fda)) return(new CTFont(fd, 10)); case "CTFontCollection": return(new CTFontCollection(new CTFontCollectionOptions())); case "CTFontDescriptor": fda = new CTFontDescriptorAttributes(); return(new CTFontDescriptor(fda)); case "CTTextTab": return(new CTTextTab(CTTextAlignment.Left, 2)); case "CTTypesetter": return(new CTTypesetter(new NSAttributedString("Hello, world", new CTStringAttributes() { ForegroundColorFromContext = true, Font = new CTFont("ArialMT", 24) }))); case "CTFrame": var framesetter = new CTFramesetter(new NSAttributedString("Hello, world", new CTStringAttributes() { ForegroundColorFromContext = true, Font = new CTFont("ArialMT", 24) })); var bPath = UIBezierPath.FromRect(new RectangleF(0, 0, 3, 3)); return(framesetter.GetFrame(new NSRange(0, 0), bPath.CGPath, null)); case "CTFramesetter": return(new CTFramesetter(new NSAttributedString("Hello, world", new CTStringAttributes() { ForegroundColorFromContext = true, Font = new CTFont("ArialMT", 24) }))); case "CTGlyphInfo": return(new CTGlyphInfo("copyright", new CTFont("ArialMY", 24), "Foo")); case "CTLine": return(new CTLine(new NSAttributedString("Hello, world", new CTStringAttributes() { ForegroundColorFromContext = true, Font = new CTFont("ArialMT", 24) }))); case "CGImageDestination": var storage = new NSMutableData(); return(CGImageDestination.Create(new CGDataConsumer(storage), "public.png", 1)); case "CGImageMetadataTag": using (NSString name = new NSString("tagName")) using (var value = new NSString("value")) return(new CGImageMetadataTag(CGImageMetadataTagNamespaces.Exif, CGImageMetadataTagPrefixes.Exif, name, CGImageMetadataType.Default, value)); case "CGImageSource": filename = "xamarin1.png"; return(CGImageSource.FromUrl(NSUrl.FromFilename(filename))); case "SecPolicy": return(SecPolicy.CreateSslPolicy(false, null)); case "SecIdentity": using (var options = NSDictionary.FromObjectAndKey(new NSString("farscape"), SecImportExport.Passphrase)) { NSDictionary[] array; var result = SecImportExport.ImportPkcs12(farscape_pfx, options, out array); if (result != SecStatusCode.Success) { throw new InvalidOperationException(string.Format("Could not create the new instance for type {0} due to {1}.", t.Name, result)); } return(new SecIdentity(array [0].LowlevelObjectForKey(SecImportExport.Identity.Handle))); } case "SecTrust": X509Certificate x = new X509Certificate(mail_google_com); using (var policy = SecPolicy.CreateSslPolicy(true, "mail.google.com")) return(new SecTrust(x, policy)); case "SslContext": return(new SslContext(SslProtocolSide.Client, SslConnectionType.Stream)); case "UIFontFeature": return(new UIFontFeature(CTFontFeatureNumberSpacing.Selector.ProportionalNumbers)); case "NetworkReachability": return(new NetworkReachability(IPAddress.Loopback, null)); case "VTCompressionSession": case "VTSession": return(VTCompressionSession.Create(1024, 768, CMVideoCodecType.H264, (sourceFrame, status, flags, buffer) => { }, null, (CVPixelBufferAttributes)null)); case "VTFrameSilo": return(VTFrameSilo.Create()); case "VTMultiPassStorage": return(VTMultiPassStorage.Create()); case "CFString": return(new CFString("test")); case "DispatchBlock": return(new DispatchBlock(() => { })); case "DispatchQueue": return(new DispatchQueue("com.example.subsystem.taskXYZ")); case "DispatchGroup": return(DispatchGroup.Create()); case "CGColorSpace": return(CGColorSpace.CreateDeviceCmyk()); case "CGGradient": CGColor[] cArray = { UIColor.Black.CGColor, UIColor.Clear.CGColor, UIColor.Blue.CGColor }; return(new CGGradient(null, cArray)); case "CGImage": filename = "xamarin1.png"; using (var dp = new CGDataProvider(filename)) return(CGImage.FromPNG(dp, null, false, CGColorRenderingIntent.Default)); case "CGColor": return(UIColor.Black.CGColor); case "CMClock": return(CMClock.HostTimeClock); case "CMTimebase": return(new CMTimebase(CMClock.HostTimeClock)); case "CVPixelBufferPool": return(new CVPixelBufferPool( new CVPixelBufferPoolSettings(), new CVPixelBufferAttributes(CVPixelFormatType.CV24RGB, 100, 50) )); case "SecCertificate": using (var cdata = NSData.FromArray(mail_google_com)) return(new SecCertificate(cdata)); case "SecCertificate2": using (var cdata = NSData.FromArray(mail_google_com)) return(new SecCertificate2(new SecCertificate(cdata))); case "SecTrust2": X509Certificate x2 = new X509Certificate(mail_google_com); using (var policy = SecPolicy.CreateSslPolicy(true, "mail.google.com")) return(new SecTrust2(new SecTrust(x2, policy))); case "SecIdentity2": using (var options = NSDictionary.FromObjectAndKey(new NSString("farscape"), SecImportExport.Passphrase)) { NSDictionary[] array; var result = SecImportExport.ImportPkcs12(farscape_pfx, options, out array); if (result != SecStatusCode.Success) { throw new InvalidOperationException(string.Format("Could not create the new instance for type {0} due to {1}.", t.Name, result)); } return(new SecIdentity2(new SecIdentity(array [0].LowlevelObjectForKey(SecImportExport.Identity.Handle)))); } case "SecKey": SecKey private_key; SecKey public_key; using (var record = new SecRecord(SecKind.Key)) { record.KeyType = SecKeyType.RSA; record.KeySizeInBits = 512; // it's not a performance test :) SecKey.GenerateKeyPair(record.ToDictionary(), out public_key, out private_key); return(private_key); } case "SecAccessControl": return(new SecAccessControl(SecAccessible.WhenPasscodeSetThisDeviceOnly)); default: throw new InvalidOperationException(string.Format("Could not create the new instance for type {0}.", t.Name)); } }
/// <summary> /// Creates a composited image from a list of source images /// </summary> /// <param name="paths">The paths of the images, in order of lowest z-index to highest, to composite together</param> /// <param name="saveLocation">Where to save the composited image</param> /// <param name="overwrite"><c>true</c> to overwrite an existing file; otherwise <c>false</c>.</param> public void CreateCompositeImage(List <string> paths, string saveLocation, bool overwrite) { if (!overwrite && Device.File.Exists(saveLocation)) { return; } paths = paths.Where(path => path != null && Device.File.Exists(path)).ToList(); if (paths.Count == 0) { return; } try { var metric = System.DateTime.UtcNow; Device.File.EnsureDirectoryExists(saveLocation); using (new NSAutoreleasePool()) { var images = new List <CGImage>(paths.Count); images.AddRange(paths.Select <string, CGImage>(path => path.EndsWith(".png", StringComparison.InvariantCultureIgnoreCase) ? CGImage.FromPNG(CGDataProvider.FromFile(path), null, false, CGColorRenderingIntent.Default) : CGImage.FromJPEG(CGDataProvider.FromFile(path), null, false, CGColorRenderingIntent.Default))); nint width = images[0].Width; nint height = images[0].Height; var bounds = new RectangleF(0, 0, width, height); CGBitmapContext g = new CGBitmapContext( System.IntPtr.Zero, width, height, images[0].BitsPerComponent, images[0].Width * 4, CGColorSpace.CreateDeviceRGB(), CGImageAlphaInfo.PremultipliedLast ); foreach (var cgImage in images) { g.DrawImage(bounds, cgImage); } lock (padlock) { // UIImage.AsPNG() should be safe to run on a background thread, but MT 6.2.6.6 says otherwise. // Xamarin confirmed that this was unintentional and that MT 6.2.7 will remove the UI check. UIApplication.CheckForIllegalCrossThreadCalls = false; NSError err = null; UIImage.FromImage(g.ToImage()).AsPNG().Save(saveLocation, true, out err); UIApplication.CheckForIllegalCrossThreadCalls = true; } } Device.Log.Metric("ImageEngine icon creation", System.DateTime.UtcNow.Subtract(metric).TotalMilliseconds); } catch (Exception e) { Device.Log.Error("An error occurred while compositing the image", e); } }
private static CGImage CGImageFromPNGFile(string filename) { var provider = new CGDataProvider(filename); return(CGImage.FromPNG(provider, null, false, CGColorRenderingIntent.AbsoluteColorimetric)); }