コード例 #1
0
 public void LoadImageData(Stream imageStream, ImageBuffer destImage)
 {
     using (var bitmap = new Bitmap(imageStream))
     {
         ImageIOWindowsPlugin.ConvertBitmapToImage(destImage, bitmap);
     }
 }
コード例 #2
0
        private void LoadImage(string path, ImageBuffer destImage, bool invertImage = false)
        {
            lock (locker)
            {
                if (!cachedImages.TryGetValue(path, out ImageBuffer cachedImage))
                {
                    using (var imageStream = OpenStream(path))
                        using (var bitmap = new Bitmap(imageStream))
                        {
                            cachedImage = new ImageBuffer();
                            ImageIOWindowsPlugin.ConvertBitmapToImage(cachedImage, bitmap);
                        }

                    if (cachedImage.Width < 200 && cachedImage.Height < 200)
                    {
                        // only cache relatively small images
                        cachedImages.Add(path, cachedImage);
                    }
                }

                // Themed icons are black and need be inverted on dark themes, or when white icons are requested
                if (invertImage)
                {
                    cachedImage = cachedImage.InvertLightness();
                    cachedImage.SetRecieveBlender(new BlenderPreMultBGRA());
                }

                destImage.CopyFrom(cachedImage);
            }
        }
コード例 #3
0
 public void LoadImage(string path, ImageBuffer destImage)
 {
     using (var imageStream = OpenSteam(path))
     {
         var bitmap = new Bitmap(imageStream);
         ImageIOWindowsPlugin.ConvertBitmapToImage(destImage, bitmap);
     }
 }
コード例 #4
0
        public ImageBuffer GetImage()
        {
            var bitmap = new System.Drawing.Bitmap(System.Windows.Forms.Clipboard.GetImage());
            var image  = new ImageBuffer();

            if (ImageIOWindowsPlugin.ConvertBitmapToImage(image, bitmap))
            {
                return(image);
            }

            return(null);
        }
コード例 #5
0
        public void LoadImageSequenceData(Stream stream, ImageSequence sequence)
        {
            lock (locker)
            {
                System.Drawing.Image image;
                try
                {
                    image = System.Drawing.Image.FromStream(stream);
                }
                catch
                {
                    return;
                }

                sequence.Frames.Clear();
                sequence.FrameTimesMs.Clear();

                var dimension = new System.Drawing.Imaging.FrameDimension(image.FrameDimensionsList[0]);
                // Number of frames
                int frameCount = image.GetFrameCount(dimension);

                if (frameCount > 1)
                {
                    var minFrameTimeMs = int.MaxValue;
                    for (var i = 0; i < frameCount; i++)
                    {
                        // Return an Image at a certain index
                        image.SelectActiveFrame(dimension, i);
                        ImageBuffer imageBuffer = new ImageBuffer();
                        if (ImageIOWindowsPlugin.ConvertBitmapToImage(imageBuffer, new Bitmap(image)))
                        {
                            var frameDelay = BitConverter.ToInt32(image.GetPropertyItem(20736).Value, i * 4) * 10;

                            sequence.AddImage(imageBuffer, frameDelay);
                            minFrameTimeMs = Math.Max(10, Math.Min(frameDelay, minFrameTimeMs));
                        }
                    }
                    var item = image.GetPropertyItem(0x5100);                     // FrameDelay in libgdiplus
                    // Time is in milliseconds
                    sequence.SecondsPerFrame = minFrameTimeMs / 1000.0;
                }
                else
                {
                    ImageBuffer imageBuffer = new ImageBuffer();
                    if (ImageIOWindowsPlugin.ConvertBitmapToImage(imageBuffer, new Bitmap(image)))
                    {
                        sequence.AddImage(imageBuffer);
                    }
                }
            }
        }
コード例 #6
0
        public void LoadImage(string path, ImageBuffer destImage)
        {
            ImageBuffer cachedImage = null;

            if (!cachedImages.TryGetValue(path, out cachedImage))
            {
                using (var imageStream = OpenSteam(path))
                {
                    var bitmap = new Bitmap(imageStream);
                    cachedImage = new ImageBuffer();
                    ImageIOWindowsPlugin.ConvertBitmapToImage(cachedImage, bitmap);
                }
                if (cachedImage.Width < 200 && cachedImage.Height < 200)
                {
                    // only cache relatively small images
                    cachedImages.Add(path, cachedImage);
                }
            }

            destImage.CopyFrom(cachedImage);
        }
コード例 #7
0
 public void SetImage(ImageBuffer imageBuffer)
 {
     System.Windows.Forms.Clipboard.SetImage(ImageIOWindowsPlugin.ConvertImageToBitmap(imageBuffer));
 }