【发布时间】:2022-01-20 00:37:11
【问题描述】:
ESRI 符号库速度很慢,有时需要比预期更长的时间。
我希望将选定范围的 ImageSource 序列化到缓存、内存或文件中的字符串。
我在网上搜索过,但在 ImageSource 上搜索的不多。
我发现一个有趣的东西是“ImageSourceValueSerializer”。
作为 WPF 中 3 个月大的婴儿,我不太确定如何解决这个问题。
这是我获得 ImageSource 的方式:
MultilayerPointSymbol multiLayerSym = await result.GetSymbolAsync() as MultilayerPointSymbol;
RuntimeImage swatch = await multiLayerSym.CreateSwatchAsync();
ImageSource symbolImage = await swatch.ToImageSourceAsync();
测试过克莱门的,套路:
MultilayerPointSymbol multiLayerSym = await result.GetSymbolAsync() as MultilayerPointSymbol;
RuntimeImage swatch = await multiLayerSym.CreateSwatchAsync();
ImageSource symbolImage = await swatch.ToImageSourceAsync();
byte[] b = ImageSourceBinary(symbolImage);
ImageSource test = BinaryImageSource(b);
在课堂上:
private byte[] ImageSourceBinary(ImageSource imageSrc)
{
if (imageSrc is BitmapSource bitmapSource)
{
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
using (MemoryStream stream = new MemoryStream())
{
encoder.Save(stream);
return stream.ToArray();
}
}
return null;
}
private ImageSource BinaryImageSource(byte[] bytes)
{
using (MemoryStream stream = new MemoryStream(bytes))
{
PngBitmapDecoder decoder = new PngBitmapDecoder(stream, BitmapCreateOptions.IgnoreImageCache, BitmapCacheOption.Default);
BitmapFrame bf = decoder.Frames[0];
if (bf is ImageSource imagesource)
return imagesource;
return null;
}
}
结果,无图! :(
【问题讨论】:
-
我看不出这与字符串有什么关系。
标签: c# wpf bitmap imagesource