Exemplo n.º 1
0
        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));
                }
            }
        }
Exemplo n.º 2
0
        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();
                }
            }
        }
Exemplo n.º 3
0
 // 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);
 }
Exemplo n.º 4
0
        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]");
                    }
                }
            }
        }
Exemplo n.º 5
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());
        }
Exemplo n.º 6
0
        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);
                }
            }
        }
Exemplo n.º 7
0
        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");
                }
        }
Exemplo n.º 9
0
		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");
			}
		}
Exemplo n.º 10
0
        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)));
        }
Exemplo n.º 11
0
        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));
                }
            }
        }
Exemplo n.º 13
0
        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)));
            }
        }
Exemplo n.º 14
0
		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]");
					}
				}
			}
		}
Exemplo n.º 15
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);
     }
 }
Exemplo n.º 16
0
        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;
        }
Exemplo n.º 17
0
        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);
                    }
                }
            }
        }
Exemplo n.º 18
0
        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();
                }
            }
        }
Exemplo n.º 19
0
        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));
            }
        }
Exemplo n.º 20
0
        /// <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));
        }