Class DataStreamSupporter
Namespace: Aspose.Imaging
Assembly: Aspose.Imaging.dll (25.2.0)
数据流容器。
[JsonObject(MemberSerialization.OptIn)]
public abstract class DataStreamSupporter : DisposableObject, IDisposable
继承
object ← DisposableObject ← DataStreamSupporter
派生
实现
继承成员
DisposableObject.Dispose(), DisposableObject.ReleaseManagedResources(), DisposableObject.ReleaseUnmanagedResources(), DisposableObject.VerifyNotDisposed(), DisposableObject.Disposed, object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
构造函数
DataStreamSupporter()
初始化 Aspose.Imaging.DataStreamSupporter 类的新实例。
[JsonConstructor]
protected DataStreamSupporter()
字段
timeout
等待同步的超时时间。
[JsonProperty]
protected int timeout
字段值
属性
DataStreamContainer
获取对象的数据流。
public StreamContainer DataStreamContainer { get; }
属性值
IsCached
获取一个值,指示对象的数据当前是否被缓存,并且不需要读取数据。
public abstract bool IsCached { get; }
属性值
方法
CacheData()
缓存数据,并确保不会从基础的 Aspose.Imaging.DataStreamSupporter.DataStreamContainer 中执行额外的数据加载。
public abstract void CacheData()
示例
以下示例展示了图像缓存对性能的影响。一般情况下,读取缓存数据的速度快于读取非缓存数据。```csharp [C#]
string dir = "c:\\temp\\";
// 从 PNG 文件加载图像。
using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Load(dir + "sample.png"))
{
// 缓存所有像素数据,以便不再从基础数据流中执行额外的数据加载
image.CacheData();
System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
// 读取所有像素的速度非常快。
Aspose.Imaging.RasterImage rasterImage = (Aspose.Imaging.RasterImage)image;
for (int y = 0; y < image.Height; y++)
{
for (int x = 0; x < image.Width; x++)
{
int color = rasterImage.GetArgb32Pixel(x, y);
}
}
stopwatch.Stop();
System.Console.WriteLine("读取所有缓存像素耗时 {0} 毫秒。", stopwatch.ElapsedMilliseconds);
}
// 从 PNG 文件加载图像
using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Load(dir + "sample.png"))
{
System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
// 读取所有像素的速度不如缓存时快
Aspose.Imaging.RasterImage rasterImage = (Aspose.Imaging.RasterImage)image;
for (int y = 0; y < image.Height; y++)
{
for (int x = 0; x < image.Width; x++)
{
int color = rasterImage.GetArgb32Pixel(x, y);
}
}
stopwatch.Stop();
System.Console.WriteLine("读取所有像素而没有预先缓存耗时 {0} 毫秒。", stopwatch.ElapsedMilliseconds);
}
// 输出可能如下所示:
// 读取所有缓存像素耗时 1500 毫秒。
// 读取所有像素而没有预先缓存耗时 150000 毫秒。
### <a id="Aspose_Imaging_DataStreamSupporter_OnDataStreamContainerChanging_Aspose_Imaging_StreamContainer_"></a> OnDataStreamContainerChanging\(StreamContainer\)
当数据流容器发生变化时调用。
```csharp
protected virtual void OnDataStreamContainerChanging(StreamContainer streamContainer)
参数
streamContainer
StreamContainer
流容器。
ReleaseManagedResources()
释放托管资源。确保这里没有释放非托管资源,因为它们可能已经被释放。
protected override void ReleaseManagedResources()
Save()
将对象的数据保存到当前的 Aspose.Imaging.DataStreamSupporter。
public virtual void Save()
Save(Stream)
将对象的数据保存到指定的流中。
public void Save(Stream stream)
参数
stream
Stream
要保存对象数据的流。
Save(string)
将对象的数据保存到指定的文件位置。
public virtual void Save(string filePath)
参数
filePath
string
要保存对象数据的文件路径。
Save(string, bool)
将对象的数据保存到指定的文件位置。
public virtual void Save(string filePath, bool overWrite)
参数
filePath
string
要保存对象数据的文件路径。
overWrite
bool
如果设置为 ```cstrue,则覆盖文件内容,否则将进行追加。
SaveData(Stream)
保存数据。
protected abstract void SaveData(Stream stream)
参数
stream
Stream
要保存数据的流。