예제 #1
0
 public void FileName_CreatedWithImageOnly_Null()
 {
     using (var pi = PalasoImage.FromImage(new Bitmap(10, 10)))
     {
         Assert.IsNull(pi.FileName);
     }
 }
예제 #2
0
        public void ShowToolboxWith_PreExisting_EnsureRawFormatUnchanged()
        {
            Application.EnableVisualStyles();
            PalasoImage i = PalasoImage.FromImage(TestImages.logo);

            using (var dlg = new ImageToolboxDialog(i, ""))
            {
                dlg.ShowDialog();
                Assert.AreEqual(ImageFormat.Jpeg.Guid, dlg.ImageInfo.Image.RawFormat.Guid);
            }
        }
예제 #3
0
        public void ShowToolboxWith_PreExisting_Image_WithMetadata()
        {
            Application.EnableVisualStyles();
            PalasoImage i = PalasoImage.FromImage(LicenseLogos.by_nd);

            i.Metadata.License         = new CreativeCommonsLicense(true, true, CreativeCommonsLicense.DerivativeRules.DerivativesWithShareAndShareAlike);
            i.Metadata.CopyrightNotice = "Copyright 1992 Papua New Guinea Department of Education and Other Good Things";
            i.Metadata.CollectionName  = "International Illustrations: The Art Of Reading";
            i.Metadata.Creator         = "Various Talented Illustrators";
            //using (var f = TempFile.WithExtension(".png"))
            {
                //i.Save(f.Path);
                using (var dlg = new ImageToolboxDialog(i, "arrow"))
                {
                    dlg.ShowDialog();
                }
            }
        }
예제 #4
0
 private static void RoundTripImageThenCheckPixelFormat(string extension, ImageFormat imageFormat, PixelFormat pixelFormat)
 {
     using (var originalBitmap = new Bitmap(10, 10, pixelFormat))
         using (var saved = TempFile.WithExtension(extension))
         {
             using (var palasoImageToSave = PalasoImage.FromImage(originalBitmap))
             {
                 palasoImageToSave.Save(saved.Path);
             }
             using (var palasoImageToSave = PalasoImage.FromFile(saved.Path))
             {
                 Assert.AreEqual(pixelFormat, palasoImageToSave.Image.PixelFormat, "Format was lost when loading into palaso image");
             }
             using (var loaded = Image.FromFile(saved.Path))
             {
                 Assert.AreEqual(pixelFormat, loaded.PixelFormat, "Format was lost when loading into plain .net Image");
             }
         }
 }
예제 #5
0
 public void FromImage_NullImage_Throws()
 {
     Assert.Throws <ArgumentNullException>(
         () => PalasoImage.FromImage(null));
 }
예제 #6
0
        public static PalasoImage GetImageFromClipboard()
        {
            // N.B.: PalasoImage does not handle .svg files
#if MONO
            if (GtkContainsImage())
            {
                return(PalasoImage.FromImage(GtkGetImage()));
            }

            if (GtkContainsText())
            {
                //REVIEW: I can find no documentation on GtkClipboard. If ContainsText means we have a file
                //	path, then it would be better to do PalasoImage.FromFileRobustly(); on the file path
                return(PalasoImage.FromImage(GtkGetImageFromText()));
            }

            return(null);
#else
            var dataObject = Clipboard.GetDataObject();
            if (dataObject == null)
            {
                return(null);
            }

            var textData = String.Empty;
            if (dataObject.GetDataPresent(DataFormats.UnicodeText))
            {
                textData = dataObject.GetData(DataFormats.UnicodeText) as String;
            }
            if (Clipboard.ContainsImage())
            {
                PalasoImage plainImage = null;
                try
                {
                    plainImage = PalasoImage.FromImage(Clipboard.GetImage());                     // this method won't copy any metadata
                    var haveFileUrl = !String.IsNullOrEmpty(textData) && RobustFile.Exists(textData);

                    // If we have an image on the clipboard, and we also have text that is a valid url to an image file,
                    // use the url to create a PalasoImage (which will pull in any metadata associated with the image too)
                    if (haveFileUrl)
                    {
                        var imageWithPathAndMaybeMetadata = PalasoImage.FromFileRobustly(textData);
                        plainImage.Dispose();                        //important: don't do this until we've successfully created the imageWithPathAndMaybeMetadata
                        return(imageWithPathAndMaybeMetadata);
                    }
                    else
                    {
                        return(plainImage);
                    }
                }
                catch (Exception e)
                {
                    Logger.WriteEvent("PortableClipboard.GetImageFromClipboard() failed with message " + e.Message);
                    return(plainImage);                    // at worst, we should return null; if FromFile() failed, we return an image
                }
            }
            // the ContainsImage() returns false when copying an PNG from MS Word
            // so here we explicitly ask for a PNG and see if we can convert it.
            if (dataObject.GetDataPresent("PNG"))
            {
                var o = dataObject.GetData("PNG") as Stream;
                try
                {
                    return(PalasoImage.FromImage(Image.FromStream(o)));
                }
                catch (Exception)
                {}
            }

            //People can do a "copy" from the WIndows Photo Viewer but what it puts on the clipboard is a path, not an image
            if (dataObject.GetDataPresent(DataFormats.FileDrop))
            {
                //This line gets all the file paths that were selected in explorer
                string[] files = dataObject.GetData(DataFormats.FileDrop) as string[];
                if (files == null)
                {
                    return(null);
                }

                foreach (var file in files.Where(f => RobustFile.Exists(f)))
                {
                    try
                    {
                        return(PalasoImage.FromFileRobustly(file));
                    }
                    catch (Exception)
                    {}
                }

                return(null);                //not an image
            }

            if (!Clipboard.ContainsText() || !RobustFile.Exists(Clipboard.GetText()))
            {
                return(null);
            }

            try
            {
                return(PalasoImage.FromImage(Image.FromStream(new FileStream(Clipboard.GetText(), FileMode.Open))));
            }
            catch (Exception)
            {}

            return(null);
#endif
        }