在 Xamarin 中使用 SkiaSharp.SKBitmap 图像作为按钮的图像源
Using SkiaSharp.SKBitmap image as the ImageSource for a Button in Xamarin
我正在尝试 use/convert SKBitmap
图像 as/to 一个 ImageSource
对象,以便通过分配给 Button
使用上述图像它 ImageSource
属性 但是,对于我来说,无法弄清楚如何将 SKBitmap
对象转换为 ImageSource
.
在网络上搜索仅在将 ImageSource
转换为 SKBitmap
时产生 articles/issues 而不是相反。
提前致谢。
你可以试试这个:
SKBitmap bitmap = ...;
// create an image COPY
//SKImage image = SKImage.FromBitmap(bitmap);
// OR
// create an image WRAPPER
SKImage image = SKImage.FromPixels(bitmap.PeekPixels());
// encode the image (defaults to PNG)
SKData encoded = image.Encode();
// get a stream over the encoded data
Stream stream = encoded.AsStream();
img.Source = ImageSource.FromStream(()=> stream);
Button
class的ImageSource
属性是ImageSource
类型,其值可以设置为代表路径的字符串通过将字符串分配给 属性 或使用 ImageSource.FromFile()
方法来获取图像。由于 ImageSource
类型不能与 SKBitmap
图像一起使用,因此可以将 SKBitmap
对象表示的图像保存到磁盘(最好在应用程序缓存中)以及保存图像的路径可用于初始化相关 ImageSource
对象。
SKBitmap bitmap;
SKImage image = SKImage.FromBitmap(bitmap);
SKData encodedData = image.Encode(SKEncodedImageFormat.Png, 100);
string imagePath = Path.Combine(FileSystem.CacheDirectory, "image.png");
bitmapImageStream = File.Open(imagePath,
FileMode.Create,
FileAccess.Write,
FileShare.None);
encodedData.SaveTo(bitmapImageStream);
bitmapImageStream.Flush(true);
bitmapImageStream.Dispose();
ImageSource imgSrc;
imgSrc = ImageSource.FromFile(imagePath);
// or imgSrc = imagePath;
我正在尝试 use/convert SKBitmap
图像 as/to 一个 ImageSource
对象,以便通过分配给 Button
使用上述图像它 ImageSource
属性 但是,对于我来说,无法弄清楚如何将 SKBitmap
对象转换为 ImageSource
.
在网络上搜索仅在将 ImageSource
转换为 SKBitmap
时产生 articles/issues 而不是相反。
提前致谢。
你可以试试这个:
SKBitmap bitmap = ...;
// create an image COPY
//SKImage image = SKImage.FromBitmap(bitmap);
// OR
// create an image WRAPPER
SKImage image = SKImage.FromPixels(bitmap.PeekPixels());
// encode the image (defaults to PNG)
SKData encoded = image.Encode();
// get a stream over the encoded data
Stream stream = encoded.AsStream();
img.Source = ImageSource.FromStream(()=> stream);
Button
class的ImageSource
属性是ImageSource
类型,其值可以设置为代表路径的字符串通过将字符串分配给 属性 或使用 ImageSource.FromFile()
方法来获取图像。由于 ImageSource
类型不能与 SKBitmap
图像一起使用,因此可以将 SKBitmap
对象表示的图像保存到磁盘(最好在应用程序缓存中)以及保存图像的路径可用于初始化相关 ImageSource
对象。
SKBitmap bitmap;
SKImage image = SKImage.FromBitmap(bitmap);
SKData encodedData = image.Encode(SKEncodedImageFormat.Png, 100);
string imagePath = Path.Combine(FileSystem.CacheDirectory, "image.png");
bitmapImageStream = File.Open(imagePath,
FileMode.Create,
FileAccess.Write,
FileShare.None);
encodedData.SaveTo(bitmapImageStream);
bitmapImageStream.Flush(true);
bitmapImageStream.Dispose();
ImageSource imgSrc;
imgSrc = ImageSource.FromFile(imagePath);
// or imgSrc = imagePath;