ToBitmap() public method

Converts the image to a bitmap
public ToBitmap ( ImageFormat format = ImageFormat.ARGB32 ) : BitmapImage
format ImageFormat Bitmap format
return BitmapImage
Ejemplo n.º 1
0
        /// <summary>
        /// Loads an image from a resource
        /// </summary>
        /// <returns>An image</returns>
        /// <param name="assembly">The assembly from which to load the image</param>
        /// <param name="resource">Resource name</param>
        /// <remarks>
        /// This method will look for alternative versions of the image with different resolutions.
        /// For example, if a resource is named "foo.png", this method will load
        /// other resources with the name "*****@*****.**", where XXX can be any arbitrary string. For example "*****@*****.**".
        /// Each of those resources will be considered different versions of the same image.
        /// </remarks>
        public static Image FromResource(Assembly assembly, string resource)
        {
            if (assembly == null)
                throw new ArgumentNullException ("assembly");
            if (resource == null)
                throw new ArgumentNullException ("resource");

            var toolkit = Toolkit.CurrentEngine;
            if (toolkit == null)
                throw new ToolkitNotInitializedException ();

            var name = Path.GetFileNameWithoutExtension (resource);

            var img = toolkit.ImageBackendHandler.LoadFromResource (assembly, resource);
            if (img == null)
                throw new InvalidOperationException ("Resource not found: " + resource);

            var reqSize = toolkit.ImageBackendHandler.GetSize (img);

            var ext = GetExtension (resource);
            var altImages = new List<Tuple<string,object>> ();

            foreach (var r in assembly.GetManifestResourceNames ()) {
                int i = r.LastIndexOf ('@');
                if (i != -1) {
                    string rname = r.Substring (0, i);
                    if (rname == resource || rname == name) {
                        var rim = toolkit.ImageBackendHandler.LoadFromResource (assembly, r);
                        if (rim != null)
                            altImages.Add (new Tuple<string, object> (r, rim));
                    }
                }
            }
            if (altImages.Count > 0) {
                altImages.Insert (0, new Tuple<string, object> (resource, img));
                if (ext == ".9.png")
                    return CreateComposedNinePatch (toolkit, altImages);
                img = toolkit.ImageBackendHandler.CreateMultiResolutionImage (altImages.Select (i => i.Item2));
            }
            var res = new Image (img, toolkit) {
                requestedSize = reqSize
            };
            res.NativeRef.SetResourceSource (assembly, resource);
            if (ext == ".9.png")
                res = new NinePatchImage (res.ToBitmap ());
            return res;
        }
Ejemplo n.º 2
0
        public static Image FromFile(string file)
        {
            var toolkit = Toolkit.CurrentEngine;
            if (toolkit == null)
                throw new ToolkitNotInitializedException ();

            var ext = GetExtension (file);
            var img = toolkit.ImageBackendHandler.LoadFromFile (file);

            List<Tuple<string,object>> altImages = null;
            foreach (var s in supportedScales) {
                var fn = file.Substring (0, file.Length - ext.Length) + "@" + s + "x" + ext;
                if (File.Exists (fn)) {
                    if (altImages == null) {
                        altImages = new List<Tuple<string, object>> ();
                        altImages.Add (new Tuple<string, object> (file, img));
                    }
                    altImages.Add (new Tuple<string, object> (fn, toolkit.ImageBackendHandler.LoadFromFile (fn)));
                }
            }

            if (altImages != null) {
                if (ext == ".9.png")
                    return CreateComposedNinePatch (toolkit, altImages);
                img = toolkit.ImageBackendHandler.CreateMultiResolutionImage (altImages.Select (i => i.Item2));
            }

            var res = new Image (img, toolkit);
            if (ext == ".9.png")
                res = new NinePatchImage (res.ToBitmap ());
            return res;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Loads an image from a resource
        /// </summary>
        /// <returns>An image</returns>
        /// <param name="assembly">The assembly from which to load the image</param>
        /// <param name="resource">Resource name</param>
        /// <remarks>
        /// This method will look for alternative versions of the image with different resolutions.
        /// For example, if a resource is named "foo.png", this method will load
        /// other resources with the name "*****@*****.**", where XXX can be any arbitrary string. For example "*****@*****.**".
        /// Each of those resources will be considered different versions of the same image.
        /// </remarks>
        public static Image FromResource(Assembly assembly, string resource)
        {
            if (assembly == null)
            {
                throw new ArgumentNullException("assembly");
            }
            if (resource == null)
            {
                throw new ArgumentNullException("resource");
            }

            var toolkit = Toolkit.CurrentEngine;

            if (toolkit == null)
            {
                throw new ToolkitNotInitializedException();
            }

            var name = Path.GetFileNameWithoutExtension(resource);

            var img = toolkit.ImageBackendHandler.LoadFromResource(assembly, resource);

            if (img == null)
            {
                throw new InvalidOperationException("Resource not found: " + resource);
            }

            var reqSize = toolkit.ImageBackendHandler.GetSize(img);

            var ext       = GetExtension(resource);
            var altImages = new List <Tuple <string, object> > ();

            foreach (var r in assembly.GetManifestResourceNames())
            {
                int i = r.LastIndexOf('@');
                if (i != -1)
                {
                    string rname = r.Substring(0, i);
                    if (rname == resource || rname == name)
                    {
                        var rim = toolkit.ImageBackendHandler.LoadFromResource(assembly, r);
                        if (rim != null)
                        {
                            altImages.Add(new Tuple <string, object> (r, rim));
                        }
                    }
                }
            }
            if (altImages.Count > 0)
            {
                altImages.Insert(0, new Tuple <string, object> (resource, img));
                if (ext == ".9.png")
                {
                    return(CreateComposedNinePatch(toolkit, altImages));
                }
                img = toolkit.ImageBackendHandler.CreateMultiResolutionImage(altImages.Select(i => i.Item2));
            }
            var res = new Image(img, toolkit)
            {
                requestedSize = reqSize
            };

            res.NativeRef.SetResourceSource(assembly, resource);
            if (ext == ".9.png")
            {
                res = new NinePatchImage(res.ToBitmap());
            }
            return(res);
        }
Ejemplo n.º 4
0
 public static Image DiffImages(Image img1, Image img2)
 {
     bool foundDifference = false;
     var bmp1 = img1.ToBitmap ();
     var bmp2 = img2.ToBitmap ();
     var res = new ImageBuilder ((int)Math.Min (bmp1.Size.Width, bmp2.Size.Width), (int) Math.Min (bmp1.Size.Height, bmp2.Size.Height));
     var bmpr = res.ToBitmap ();
     res.Dispose ();
     for (int y=0; y<bmp1.Size.Height && y < bmp2.Size.Height; y++) {
         for (int x=0; x<bmp1.Size.Width && x<bmp2.Size.Height; x++) {
             var p1 = bmp1.GetPixel (x, y);
             var p2 = bmp2.GetPixel (x, y);
             var col = Colors.White;
             if (p1 != p2) {
                 foundDifference = true;
                 var r = Math.Pow (p1.Red - p2.Red, 2) + Math.Pow (p1.Green - p2.Green, 2) + Math.Pow (p1.Blue - p2.Blue, 2) + Math.Pow (p1.Alpha - p2.Alpha, 2);
                 if (r < 0.01)
                     col = new Color (0.9, 0.9, 0.9);
                 else if (r < 0.1)
                     col = new Color (0.7, 0.7, 0.7);
                 else
                     col = Colors.Red;
             }
             bmpr.SetPixel (x, y, col);
         }
     }
     if (foundDifference)
         return bmpr;
     else
         return null;
 }
Ejemplo n.º 5
0
		public static void CheckImage (string refImageName, Image im)
		{
			BitmapImage img = im as BitmapImage ?? im.ToBitmap ();
			Image coreRefImage = LoadReferenceImage (refImageName);

			Image refImage = !RecheckAll ? LoadCustomReferenceImage (refImageName) : null;
			if (refImage == null)
				refImage = coreRefImage;
			
			if (refImage == null) {
				ImageFailures.Add (new FailedImageInfo () {
					TestImage = img.WithSize (img.PixelWidth, img.PixelHeight),
					ReferenceImage = img.WithSize (img.PixelWidth, img.PixelHeight),
					Name = refImageName,
					TargetDir = ProjectReferenceImageDir
				});
				return;
			}

			var diff = DiffImages (img, refImage);
			if (diff != null && refImage != coreRefImage) {
				// Maybe the original image has changed
				refImage = coreRefImage;
				diff = DiffImages (img, refImage);
			}

			if (diff != null) {
				bool knownFailure = false;
				var failedImageFile = Path.Combine (FailedImageCacheDir, refImageName);
				if (File.Exists (failedImageFile)) {
					var failedImage = Image.FromFile (Path.Combine (FailedImageCacheDir, refImageName));
					if (DiffImages (img, failedImage) == null)
						knownFailure = true;
				}
				
				if (!knownFailure) {
					ImageFailures.Add (new FailedImageInfo () {
						TestImage = img.WithSize (img.PixelWidth, img.PixelHeight),
						ReferenceImage = refImage.WithSize (img.PixelWidth, img.PixelHeight),
						DiffImage = diff,
						Name = refImageName,
						TargetDir = ProjectCustomReferenceImageDir
					});
				}
				Assert.Fail ("Image " + refImageName + " doesn't match");
			}
		}
Ejemplo n.º 6
0
 public static Pixbuf GetPixbuf(this Xwt.Drawing.Image image)
 {
     return(((GtkImage)Toolkit.GetBackend((object)image.ToBitmap(ImageIcon.ScaleFactor, ImageFormat.ARGB32))).Frames[0].Pixbuf);
 }