コード例 #1
0
 public static IImageSourceHandler GetHandler(this ImageSource source)
 {
     IImageSourceHandler returnValue = null;
     if (source is UriImageSource)
         returnValue = new ImageLoaderSourceHandler();
     else if (source is FileImageSource)
         returnValue = new FileImageSourceHandler();
     else if (source is StreamImageSource)
         returnValue = new StreamImagesourceHandler();
     return returnValue;
 }
コード例 #2
0
 /// <summary>
 /// Returns the proper <see cref="T:Xamarin.Forms.Platform.iOS.IImageSourceHandler"/> 
 /// based on the type of <see cref="T:Xamarin.Forms.ImageSource"/> provided.
 /// </summary>
 /// <param name="source">The <see cref="T:Xamarin.Forms.ImageSource"/> to get the handler for.</param>
 /// <returns>
 /// The needed handler.
 /// </returns>
 private static IImageSourceHandler GetHandler(ImageSource source)
 {
     var imageSourceHandler = (IImageSourceHandler)null;
     if(source is UriImageSource)
         imageSourceHandler = new ImageLoaderSourceHandler();
     else if(source is FileImageSource)
         imageSourceHandler = new FileImageSourceHandler();
     else if(source is StreamImageSource)
         imageSourceHandler = new StreamImagesourceHandler();
     return imageSourceHandler;
 }
コード例 #3
0
        private static IImageSourceHandler GetHandler(Xamarin.Forms.ImageSource source)
        {
            IImageSourceHandler returnValue = null;

            if (source is Xamarin.Forms.UriImageSource)
            {
                returnValue = new UriImageSourceHandler();
            }
            else if (source is Xamarin.Forms.FileImageSource)
            {
                returnValue = new FileImageSourceHandler();
            }
            else if (source is Xamarin.Forms.StreamImageSource)
            {
                returnValue = new StreamImageSourceHandler();
            }
            return(returnValue);
        }
コード例 #4
0
        /// <summary>
        /// Helper method to initialize the respective <see cref="IImageSourceHandler"/> to native <see cref="ImageView"/> using <see cref="SfImage.Source"/> property.
        /// </summary>
        /// <param name="source">Represents the <see cref="ImageSource"/>.</param>
        /// <returns>Returns the <see cref="IImageSourceHandler"/> based on <see cref="ImageSource"/>.</returns>
        private IImageSourceHandler GetHandler(ImageSource source)
        {
            IImageSourceHandler sourcehandler = null;

            if (source is UriImageSource)
            {
                sourcehandler = new ImageLoaderSourceHandler();
            }
            else if (source is FileImageSource)
            {
                sourcehandler = new FileImageSourceHandler();
            }
            else if (source is StreamImageSource)
            {
                sourcehandler = new StreamImagesourceHandler();
            }
            return(sourcehandler);
        }
コード例 #5
0
ファイル: CoreExtensions.IOS.cs プロジェクト: thejibb/Core
        public static Task <UIImage> ToUIImage(this ImageSource imageSource)
        {
            IImageSourceHandler handler = null;

            if (imageSource is UriImageSource)
            {
                handler = new ImageLoaderSourceHandler();
            }
            else if (imageSource is FileImageSource)
            {
                handler = new FileImageSourceHandler();
            }
            else if (imageSource is StreamImageSource)
            {
                handler = new StreamImagesourceHandler();
            }
            return(handler.LoadImageAsync(imageSource));
        }
コード例 #6
0
        private IImageSourceHandler GetHandler(Xamarin.Forms.ImageSource imageSource)
        {
            IImageSourceHandler returnValue = null;

            if (imageSource is Xamarin.Forms.UriImageSource)
            {
                returnValue = new ImageLoaderSourceHandler();
            }
            else if (imageSource is Xamarin.Forms.FileImageSource)
            {
                returnValue = new FileImageSourceHandler();
            }
            else if (imageSource is Xamarin.Forms.StreamImageSource)
            {
                returnValue = new StreamImagesourceHandler();
            }
            return(returnValue);
        }
コード例 #7
0
        private static Task <UIImage> GetImageFromImageSourceAsync(ImageSource imageSource)
        {
            IImageSourceHandler handler = null;

            if (imageSource is FileImageSource)
            {
                handler = new FileImageSourceHandler();
            }
            else if (imageSource is StreamImageSource)
            {
                handler = new StreamImagesourceHandler();
            }
            else if (imageSource is UriImageSource)
            {
                handler = new ImageLoaderSourceHandler();
            }
            return(handler?.LoadImageAsync(imageSource));
        }
コード例 #8
0
        private static IImageSourceHandler GetHandler(ImageSource source)
        {
            IImageSourceHandler returnValue = null;

            if (source is UriImageSource)
            {
                returnValue = new ImageLoaderSourceHandler();
            }
            else if (source is FileImageSource)
            {
                returnValue = new FileImageSourceHandler();
            }
            else if (source is StreamImageSource)
            {
                returnValue = new StreamImagesourceHandler();
            }
            return(returnValue);
        }
コード例 #9
0
ファイル: DroidPicture.cs プロジェクト: chen2qu/pinyin
        async void IPicture.SavePictureToDisk(ImageSource imgSrc, string fileName)
        {
            var renderer = new FileImageSourceHandler();
            var photo    = await renderer.LoadImageAsync(imgSrc, Android.App.Application.Context);

            if (photo == null)
            {
#if DEBUG
                Console.WriteLine("!!!LoadImage failed!!!");
#endif
                return;
            }

            var dir  = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDcim);
            var Dcim = dir.AbsolutePath;

            string cameraFolder = System.IO.Path.Combine(Dcim, "Camera");
            string jpgFileName  = System.IO.Path.Combine(cameraFolder, fileName);
#if DEBUG
            Console.WriteLine("!!!file path to save: " + jpgFileName);
#endif

            try
            {
                var stream = new FileStream(jpgFileName, FileMode.Create);
                photo.Compress(Bitmap.CompressFormat.Jpeg, 100, stream);
                stream.Close();
#if DEBUG
                Console.WriteLine("!!!!File saved!!!!");
#endif

                //mediascan adds the saved image into the gallery
                // this code will return error: [SendBroadcastPermission] action:android.intent.action.MEDIA_SCANNER_SCAN_FILE, mPermissionType:0
                var mediaScanIntent = new Intent(Intent.ActionMediaScannerScanFile);
                mediaScanIntent.SetData(Android.Net.Uri.FromFile(new Java.IO.File(jpgFileName)));
                Xamarin.Forms.Forms.Context.SendBroadcast(mediaScanIntent);
            }
            catch (SystemException e)
            {
#if DEBUG
                System.Console.WriteLine(e.Message);
#endif
            }
        }
コード例 #10
0
        private Task <Bitmap> GetImageFromImageSourceAsync(ImageSource imageSource)
        {
            IImageSourceHandler handler = null;

            if (imageSource is FileImageSource)
            {
                handler = new FileImageSourceHandler();
            }
            else if (imageSource is StreamImageSource)
            {
                handler = new StreamImagesourceHandler();
            }
            else if (imageSource is UriImageSource)
            {
                handler = new ImageLoaderSourceHandler();
            }

            return(handler?.LoadImageAsync(imageSource, _context));
        }
コード例 #11
0
		public static IImageSourceHandler GetHandler (this ImageSource source)
		{
			//Image source handler to return
			IImageSourceHandler returnValue = null;
			//check the specific source type and return the correct image source handler
			if (source is UriImageSource)
			{
				returnValue = new ImageLoaderSourceHandler();
			}
			else if (source is FileImageSource)
			{
				returnValue = new FileImageSourceHandler();
			}
			else if (source is StreamImageSource)
			{
				returnValue = new StreamImagesourceHandler();
			}
			return returnValue;
		}
コード例 #12
0
        private async void SetSource(System.Windows.Controls.Image image)
        {
            IImageSourceHandler handler;
            var source = (this.Element as BlurImageView).Source;

            if (source is FileImageSource)
            {
                handler = new FileImageSourceHandler();
            }
            else if (source is StreamImageSource)
            {
                handler = new StreamImagesourceHandler(); // sic
            }
            else if (source is UriImageSource)
            {
                handler = new ImageLoaderSourceHandler(); // sic
            }
            else
            {
                throw new NotImplementedException();
            }

            System.Windows.Media.ImageSource imagesource;
            try
            {
                imagesource = await handler.LoadImageAsync(source, new CancellationToken());
            }
            catch (TaskCanceledException ex)
            {
                imagesource = (System.Windows.Media.ImageSource)null;
            }

            // Blur
            if (imagesource is BitmapImage)
            {
                var bmpImage = imagesource as BitmapImage;
                var wr       = new WriteableBitmap(bmpImage);
                BoxBlurHorizontal(wr, 40);
                BoxBlurVertical(wr, 40);
                image.Source = wr;
            }
        }
コード例 #13
0
        public static async Task <UIImage> GetUIImage(this ImageSource imageSource, CancellationToken cancellationToken)
        {
            try
            {
                IImageSourceHandler handler = null;

                if (imageSource is FileImageSource)
                {
                    handler = new FileImageSourceHandler();
                }
                else if (imageSource is StreamImageSource)
                {
                    handler = new StreamImagesourceHandler();
                }
                else if (imageSource is UriImageSource)
                {
                    handler = new ImageLoaderSourceHandler();
                }
                else
                {
                    throw new NotImplementedException("Image source type is not supported.");
                }

                using (var image = await handler.LoadImageAsync(imageSource, cancellationToken, (float)UIScreen.MainScreen.Scale))
                //using (var image = await handler.LoadImageAsync(imageSource))
                {
                    if (image == null)
                    {
                        return(null);
                    }

                    UIGraphics.BeginImageContext(image.Size);
                    image.Draw(new CGRect(0, 0, image.Size.Width, image.Size.Height));
                    return(UIGraphics.GetImageFromCurrentImageContext());
                }
                //return handler.LoadImageAsync (imageSource, cancellationToken, (float)UIScreen.MainScreen.Scale);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
コード例 #14
0
    public static IImageSourceHandler GetHandler(this ImageSource source)
    {
        IImageSourceHandler returnValue = null;

        switch (source)
        {
        case UriImageSource _:
            returnValue = new ImageLoaderSourceHandler();
            break;

        case FileImageSource _:
            returnValue = new FileImageSourceHandler();
            break;

        case StreamImageSource _:
            returnValue = new StreamImagesourceHandler();
            break;
        }

        return(returnValue);
    }
コード例 #15
0
        public static IImageSourceHandler GetDefaultHandler(this ImageSource source)
        {
            IImageSourceHandler handler = null;

            if (source is UriImageSource)
            {
                handler = new ImageLoaderSourceHandler();
            }
            else if (source is FileImageSource)
            {
                handler = new FileImageSourceHandler();
            }
            else if (source is StreamImageSource)
            {
                handler = new StreamImagesourceHandler();
            }
            else if (source is FontImageSource)
            {
                handler = new FontImageSourceHandler();
            }
            return(handler);
        }
コード例 #16
0
        private async Task <BitmapDecoder> GetImageFromImageSource(ImageSource imageSource)
        {
            IImageSourceHandler handler;

            if (imageSource is FileImageSource)
            {
                handler = new FileImageSourceHandler();
            }
            else if (imageSource is StreamImageSource)
            {
                handler = new StreamImageSourceHandler();
                var stream = await((IStreamImageSource)imageSource).GetStreamAsync();
                if (stream != null)
                {
                    return(await BitmapDecoder.CreateAsync(WindowsRuntimeStreamExtensions.AsRandomAccessStream(stream)));
                }
            }
            else if (imageSource is UriImageSource)
            {
                handler = new UriImageSourceHandler();
            }
            else
            {
                throw new NotImplementedException();
            }

            var bitmapImage = await handler.LoadImageAsync(imageSource) as BitmapImage;

            if (bitmapImage?.UriSource != null)
            {
                using (IRandomAccessStreamWithContentType streamWithContent = await RandomAccessStreamReference.CreateFromUri(bitmapImage.UriSource).OpenReadAsync())
                {
                    return(await BitmapDecoder.CreateAsync(streamWithContent));
                }
            }

            throw new NotImplementedException();
        }
コード例 #17
0
        private async Task <Bitmap> GetImageFromImageSource(ImageSource imageSource)
        {
            IImageSourceHandler handler;

            if (imageSource is FileImageSource)
            {
                handler = new FileImageSourceHandler();
            }
            else if (imageSource is StreamImageSource)
            {
                handler = new StreamImagesourceHandler(); // sic
            }
            else if (imageSource is UriImageSource)
            {
                handler = new ImageLoaderSourceHandler(); // sic
            }
            else
            {
                throw new NotImplementedException();
            }

            return(await handler.LoadImageAsync(imageSource, this.Control.Context));
        }
コード例 #18
0
        public static Task <Bitmap> GetImage(this ImageSource imageSource)
        {
            IImageSourceHandler handler = null;

            if (imageSource is FileImageSource)
            {
                handler = new FileImageSourceHandler();
            }
            else if (imageSource is StreamImageSource)
            {
                handler = new StreamImagesourceHandler();
            }
            else if (imageSource is UriImageSource)
            {
                handler = new ImageLoaderSourceHandler();
            }
            else
            {
                throw new NotImplementedException("Image source type is not supported.");
            }

            return(handler.LoadImageAsync(imageSource, Forms.Context));
        }
コード例 #19
0
        private async Task <Bitmap> LoadBitmapFromImageSource(Context context, ImageSource imageSource)
        {
            IImageSourceHandler handler;

            if (imageSource is FileImageSource)
            {
                handler = new FileImageSourceHandler();
            }
            else if (imageSource is StreamImageSource)
            {
                handler = new StreamImagesourceHandler();
            }
            else if (imageSource is UriImageSource)
            {
                handler = new ImageLoaderSourceHandler();
            }
            else
            {
                return(null);
            }

            return(await handler.LoadImageAsync(imageSource, context));
        }
コード例 #20
0
        private async Task <UIImage> LoadImageFromImageSource(ImageSource imageSource)
        {
            IImageSourceHandler handler;

            if (imageSource is FileImageSource)
            {
                handler = new FileImageSourceHandler();
            }
            else if (imageSource is StreamImageSource)
            {
                handler = new StreamImagesourceHandler();
            }
            else if (imageSource is UriImageSource)
            {
                handler = new ImageLoaderSourceHandler();
            }
            else
            {
                return(null);
            }

            return(await handler.LoadImageAsync(imageSource));
        }
コード例 #21
0
        public static IImageSourceHandler GetImageSourceHandler(ImageSource source)
        {
            IImageSourceHandler sourceHandler = null;

            if (source is UriImageSource)
            {
                sourceHandler = new ImageLoaderSourceHandler();
            }
            else if (source is FileImageSource)
            {
                sourceHandler = new FileImageSourceHandler();
            }
            else if (source is StreamImageSource)
            {
                sourceHandler = new StreamImagesourceHandler();
            }
            else if (source is FontImageSource)
            {
                sourceHandler = new FontImageSourceHandler();
            }

            return(sourceHandler);
        }
コード例 #22
0
        Task <UIImage> GetImage(ImageSource imageSource)
        {
            IImageSourceHandler handler;

            if (imageSource is FileImageSource)
            {
                handler = new FileImageSourceHandler();
            }
            else if (imageSource is StreamImageSource)
            {
                handler = new StreamImagesourceHandler(); // sic
            }
            else if (imageSource is UriImageSource)
            {
                handler = new ImageLoaderSourceHandler(); // sic
            }
            else
            {
                throw new NotImplementedException();
            }

            return(handler.LoadImageAsync(imageSource));
        }
コード例 #23
0
        protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);
            if (e.OldElement is iOSSearchPage oldSearchPage)
            {
                oldSearchPage.PropertyChanged -= this.OnSearchPagePropertyChanged;
            }

            if (e.NewElement is iOSSearchPage iosSearchPage)
            {
                iosSearchPage.PropertyChanged += this.OnSearchPagePropertyChanged;
                this.searchController.SearchBar.Placeholder = iosSearchPage.SearchPlaceholder;
                this.searchController.SearchBar.Text        = iosSearchPage.SearchText;

                Task.Run(async() =>
                {
                    if (iosSearchPage.ActionImage != null)
                    {
                        try
                        {
                            var handler     = new FileImageSourceHandler();
                            var actionImage = await handler.LoadImageAsync(iosSearchPage.ActionImage);

                            InvokeOnMainThread(() =>
                            {
                                this.searchController.SearchBar.SetImageforSearchBarIcon(actionImage, UISearchBarIcon.Bookmark, UIControlState.Normal);
                                this.searchController.SearchBar.ShowsBookmarkButton = true;
                            });
                        }
                        catch (Exception ex)
                        {
                            Debug.WriteLine($"Error loading ActionImage: {ex.Message}");
                        }
                    }
                });
            }
        }
コード例 #24
0
        private static IImageSourceHandler GetHandler(ImageSource source)
        {
            IImageSourceHandler returnValue = null;

            switch (source)
            {
            case UriImageSource _:
                returnValue = new ImageLoaderSourceHandler();
                break;

            case FileImageSource _:
                returnValue = new FileImageSourceHandler();
                break;

            case StreamImageSource _:
                returnValue = new StreamImagesourceHandler();
                break;

            case SKBitmapImageSource _:
                returnValue = new SKImageSourceHandler();
                break;
            }
            return(returnValue);
        }
コード例 #25
0
        public async static Task <SKBitmap> BitmapFromNativeFile(string fileName)
        {
            var imageSource = ImageSource.FromFile(fileName);
            IImageSourceHandler imageLoader = new FileImageSourceHandler();

#if __ANDROID__
            if (context == null)
            {
                throw new Exception("ImageLoader not initialized.");
            }
            Bitmap image = await imageLoader.LoadImageAsync(imageSource, context);

            return(image.ToSKBitmap());
#else
            UIImage image = await imageLoader.LoadImageAsync(imageSource);

            return(image.ToSKBitmap());

            //fix the problem of drawing abnormal pixels
            //CGImage cgImage = image.CGImage;
            //var info = new SKImageInfo((int)cgImage.Width, (int)cgImage.Height);
            //var bitmap = new SKBitmap(info);
            //using (var pixmap = bitmap.PeekPixels())
            //using (var colorSpace = CGColorSpace.CreateDeviceRGB())
            //using (var context = new CGBitmapContext(pixmap.GetPixels(), pixmap.Width, pixmap.Height, 8, pixmap.RowBytes, colorSpace, CGBitmapFlags.PremultipliedLast | CGBitmapFlags.ByteOrder32Big))
            //{
            //    CheckBytes(bitmap.Bytes);
            //    CGRect rect = new CGRect(0, 0, cgImage.Width, cgImage.Height);
            //    context.ClearRect(rect);
            //    CheckBytes(bitmap.Bytes);
            //    context.DrawImage(rect, cgImage);
            //    CheckBytes(bitmap.Bytes);
            //}
            //return bitmap;
#endif
        }
コード例 #26
0
        async void SetMasterLeftBarButton(UIViewController containerController, MasterDetailPage masterDetailPage)
        {
            if (!masterDetailPage.ShouldShowToolbarButton())
            {
                containerController.NavigationItem.LeftBarButtonItem = null;
                return;
            }

            EventHandler handler = (o, e) => masterDetailPage.IsPresented = !masterDetailPage.IsPresented;

            bool shouldUseIcon = masterDetailPage.Master.Icon != null;

            if (shouldUseIcon)
            {
                try
                {
                    // Simplified the following code because we do not have access to Internals.Registrar.
                    //
                    // var source = Internals.Registrar.Registered.GetHandler<IImageSourceHandler>(masterDetailPage.Master.Icon.GetType());
                    var source = new FileImageSourceHandler();
                    var icon   = await source.LoadImageAsync(masterDetailPage.Master.Icon);

                    containerController.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(icon, UIBarButtonItemStyle.Plain, handler);
                }
                catch (Exception)
                {
                    // Throws Exception otherwise would catch more specific exception type
                    shouldUseIcon = false;
                }
            }

            if (!shouldUseIcon)
            {
                containerController.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(masterDetailPage.Master.Title, UIBarButtonItemStyle.Plain, handler);
            }
        }
コード例 #27
0
ファイル: iOSPicture.cs プロジェクト: chen2qu/pinyin
        public async void SavePictureToDisk(ImageSource imgSrc, string fileName)
        {
            var renderer = new FileImageSourceHandler();
            var photo    = await renderer.LoadImageAsync(imgSrc);

            var     documentsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
            string  jpgFileName        = System.IO.Path.Combine(documentsDirectory, fileName);
            NSData  imgData            = photo.AsJPEG();
            NSError err   = null;
            bool    saved = imgData.Save(jpgFileName, false, out err);

#if DEBUG
            if (saved)
            {
                Console.WriteLine("!!!!iOS: QRCode file saved!!!");
                //return true;
            }
            else
            {
                Console.WriteLine("!!!iOS: NOT saved as " + jpgFileName + " because " + err.LocalizedDescription);
                //return false;
            }
#endif
        }
        Task <UIImage> GetImage(FileImageSource image)
        {
            var handler = new FileImageSourceHandler();

            return(handler.LoadImageAsync(image));
        }
コード例 #29
0
        public object ConvertToNative(Brush brush, object context)
        {
            winMedia.Brush winBrush = null;

            // SolidColorBrush
            if (brush is SolidColorBrush)
            {
                SolidColorBrush xamBrush = brush as SolidColorBrush;

                winBrush = new winMedia.SolidColorBrush
                {
                    Color = ConvertColor(xamBrush.Color)
                };
            }

            // LinearGradientBrush
            else if (brush is LinearGradientBrush)
            {
                LinearGradientBrush xamBrush = brush as LinearGradientBrush;

                winBrush = new winMedia.LinearGradientBrush
                {
                    StartPoint   = ConvertPoint(xamBrush.StartPoint),
                    EndPoint     = ConvertPoint(xamBrush.EndPoint),
                    SpreadMethod = ConvertGradientSpread(xamBrush.SpreadMethod)
                };

                foreach (GradientStop xamGradientStop in xamBrush.GradientStops)
                {
                    winMedia.GradientStop winGradientStop = new winMedia.GradientStop
                    {
                        Color  = ConvertColor(xamGradientStop.Color),
                        Offset = xamGradientStop.Offset
                    };

                    (winBrush as winMedia.LinearGradientBrush).GradientStops.Add(winGradientStop);
                }
            }

            else if (brush is ImageBrush)
            {
                ImageBrush xamBrush = brush as ImageBrush;

                winBrush = new winMedia.ImageBrush
                {
                    Stretch    = (winMedia.Stretch)(int) xamBrush.Stretch,
                    AlignmentX = (winMedia.AlignmentX)(int) xamBrush.AlignmentX,
                    AlignmentY = (winMedia.AlignmentY)(int) xamBrush.AlignmentY,
                };

                ImageSource xamImageSource = (brush as ImageBrush).ImageSource;

                if (xamImageSource != null)
                {
                    IImageSourceHandler handler = null;

                    if (xamImageSource.GetType() == typeof(FileImageSource))
                    {
                        handler = new FileImageSourceHandler();
                    }
                    else if (xamImageSource.GetType() == typeof(StreamImageSource))
                    {
                        handler = new StreamImageSourceHandler();
                    }
                    else if (xamImageSource.GetType() == typeof(UriImageSource))
                    {
                        handler = new UriImageSourceHandler();
                    }

                    if (handler != null)
                    {
                        Task <winMedia.ImageSource> winImageSourceTask = handler.LoadImageAsync(xamImageSource);

                        winImageSourceTask.ContinueWith((task) =>
                        {
                            winFound.IAsyncAction asyncAction = winBrush.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                            {
                                (winBrush as winMedia.ImageBrush).ImageSource = task.Result;
                            });
                        });
                    }
                }
            }

            if (winBrush != null)
            {
                winBrush.Transform = brush.Transform?.GetNativeObject() as winMedia.MatrixTransform;

                // TODO: RelativeTransform and Opacity
            }

            return(winBrush);
        }
コード例 #30
0
        private async Task <Bitmap> GetImageFromImageSource(ImageSource imageSource, Context context)
        {
            IImageSourceHandler handler;
            bool isUriImage = false;

            if (imageSource is FileImageSource)
            {
                handler = new FileImageSourceHandler();
            }
            else if (imageSource is StreamImageSource)
            {
                handler = new StreamImagesourceHandler(); // sic
            }
            else if (imageSource is UriImageSource)
            {
                isUriImage = true;
                handler    = new ImageLoaderSourceHandler(); // sic
            }
            else
            {
                throw new NotImplementedException();
            }

            Bitmap originalBitmap = null;

            if (isUriImage)
            {
                var uri = Element.Source.GetValue(UriImageSource.UriProperty) as Uri;

                if (imageDownloader.HasLocallyCachedCopy(uri))
                {
                    var bitmap = imageDownloader.GetImage(uri);
                    if (BaseControl.ImagePlaceholder != null && bitmap == null)
                    {
                    }
                    else
                    {
                        originalBitmap = bitmap;
                    }
                }
                else
                {
                    await imageDownloader.GetImageAsync(uri).ContinueWith(t =>
                    {
                        if (t != null)
                        {
                            if (!t.IsFaulted)
                            {
                                //imageDownloader.RemoveDownloadProgress(uri);
                                if (BaseControl == null)
                                {
                                    return;
                                }

                                if (BaseControl.ImagePlaceholder != null && t.Result == null)
                                {
                                    return;
                                }

                                originalBitmap = t.Result;
                            }
                        }
                    }, TaskScheduler.FromCurrentSynchronizationContext());
                }
            }
            else
            {
                originalBitmap = await handler.LoadImageAsync(imageSource, context);
            }



            return(originalBitmap);
        }
コード例 #31
0
        Task <Bitmap> GetBitmap(FileImageSource image)
        {
            var handler = new FileImageSourceHandler();

            return(handler.LoadImageAsync(image, this.Control.Context));
        }
コード例 #32
0
ファイル: _13109IssueHelper.cs プロジェクト: sung-su/maui
        internal static IImageSourceHandler GetHandler(this ImageSource source)
        {
            IImageSourceHandler returnValue = new FileImageSourceHandler();

            return(returnValue);
        }