Class DataStreamSupporter

Class DataStreamSupporter

Namespace: Aspose.Imaging
Assembly: Aspose.Imaging.dll (25.2.0)

Контейнер потока данных.

[JsonObject(MemberSerialization.OptIn)]
public abstract class DataStreamSupporter : DisposableObject, IDisposable

Наследование

objectDisposableObjectDataStreamSupporter

Производные

Image

Реализует

IDisposable

Унаследованные члены

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

Значение поля

int

Свойства

DataStreamContainer

Получает поток данных объекта.

public StreamContainer DataStreamContainer { get; }

Значение свойства

StreamContainer

IsCached

Получает значение, указывающее, кэшированы ли данные объекта в данный момент и требуется ли чтение данных.

public abstract bool IsCached { get; }

Значение свойства

bool

Методы

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

Поток для сохранения данных.

 Русский