Xamarin:从本地文件(不是资源)导入 SKBitmap

Xamarin: import SKBitmap from local file (not Resource)

我是 Xamarin 的新手,所以我希望我问的不是愚蠢的东西。

我想将本地图像导入为 SKBitmap(SkiaSharp 位图)。

如果我尝试使用简单的解码方法,例如

var skBitmap= SKBitmap.Decode("myImg.jpg");

我的 skBitmap 是空的。

我可以使用

加载图像
var myImg = ImageSource.FromFile("myImg.jpg");

但是如何将 ImageSourse 转换为 SKBitmap

有什么建议吗? 谢谢

无论是将图片文件放到外部文件路径,还是将图片放到 xamarin forms 项目中,如下图所示。他们两个你都需要阅读 standard .NET stream 的图像

例如。我把图片放在上面的路径中。

这是我的 layout.xaml

  <skia:SKCanvasView x:Name="hsvCanvasView" WidthRequest="200" HeightRequest="200"/>

我想将此图片设置为 SKCanvasView。这是后台代码

 public partial class ItemsPage : ContentPage
    {
        ItemsViewModel viewModel;

        public ItemsPage()
        {
            InitializeComponent();
            hsvCanvasView.PaintSurface += HsvCanvasView_PaintSurface;


        }

        private void HsvCanvasView_PaintSurface(object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs args)
        {

            SKImageInfo info = args.Info;
            SKSurface surface = args.Surface;
            SKCanvas canvas = surface.Canvas;

            canvas.Clear();
            string resourceID = "App23.faded_div.jpg";
            Assembly assembly = GetType().GetTypeInfo().Assembly;
            SKBitmap bitmap;
            using (Stream stream = assembly.GetManifestResourceStream(resourceID))
            {

                 bitmap = SKBitmap.Decode(stream);
            }
            canvas.DrawBitmap(bitmap,200,200);
        }

这是运行截图。

这里有一篇很有帮助的文章,你可以参考一下。

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/graphics/skiasharp/basics/bitmaps