VintaSoft Imaging .NET SDK 14.0: Документация для .NET разработчика
Vintasoft.Imaging Namespace / ImageCollection Class / SaveAsync Methods / SaveAsync(Stream,EncoderBase) Method
Синтаксис Exceptions Ремарки Example Требования Смотрите также
В этом разделе
    SaveAsync(Stream,EncoderBase) Метод (ImageCollection)
    В этом разделе
    Асинхронно сохраняет все изображения из этой коллекции в указанный поток, используя указанный EncoderBase.
    Синтаксис
    'Declaration
    
    Public Overloads Sub SaveAsync( _
    ByVal stream
    Поток, в котором должна быть сохранена коллекция изображений.
    As System.IO.Stream, _
    ByVal encoder
    Кодировщик для сохранения изображений.
    As Vintasoft.Imaging.Codecs.Encoders.EncoderBase _
    )

    Parameters

    stream
    Поток, в котором должна быть сохранена коллекция изображений.
    encoder
    Кодировщик для сохранения изображений.
    Исключения
    ИсключениеОписание
    Выбрасывается, если stream равен null.
    Выбрасывается, если коллекция изображений не содержит изображений или в данный момент выполняется другой процесс сохранения.
    Выбрасывается, если при сохранении изображения произошла ошибка.
    Ремарки

    Этот метод работает асинхронно, т. е. для сохранения изображений создается отдельный поток.

    Поддерживаемые форматы изображений: JBIG2, PDF, TIFF.

    Этот метод

    • сохраняет изображения в поток, указанный stream, с помощью encoder
    • stream перезаписывается, если он не пустой
    • процесс сохранения может быть отменен, сохранение изображений может быть подавлено
    • источники изображений в коллекции изображений не изменяются, т. е. images[i].SourceInfo.Stream не изменяется
    если
    • stream != images[0]..SourceInfo.Stream
    • SaveAndSwitchSource имеет значение false
    • encoder.CreateNewFile имеет значение true

    Этот метод
    • добавляет изображения в существующий поток, указанный stream, с помощью encoder
    • процесс сохранения можно отменить, сохранение изображений можно подавить
    • источники изображений в коллекции изображений не изменяются, т. е. images[i].SourceInfo.Stream не изменяется
    если
    • stream != images[0]..SourceInfo.Stream
    • SaveAndSwitchSource имеет значение false
    • encoder. CreateNewFile имеет значение false

    Этот метод
    • сохраняет изображения в новый поток, указанный в stream, с помощью encoder
    • stream перезаписывается, если не пусто
    • процесс сохранения не может быть отменен, сохранение изображений не может быть подавлено
    • изменяются источники изображений в коллекции изображений, т.е. images[i].SourceInfo.Stream заменяется на stream
    , если
    Это метод
    • меняет изображения в исходном потоке, если некоторые изображения исходного файла изменены в коллекции изображений.
    • удаляет изображения из исходного потока, если некоторые изображения исходного файла удалены из коллекции изображений.
    • добавляет изображения в исходный поток, если в коллекцию изображений добавлены некоторые изображения NOT из исходного файла.
    • переиндексирует изображения в исходном потоке, если изображения переиндексированы в коллекции изображений
    • процесс сохранения не может быть отменен, сохранение изображений не может быть подавлено
    • изменяются источники изображений в коллекции изображений, т.е. images[i].SourceInfo. Поток меняется на stream
    , если
    Этот метод
    • выдать исключение
    if
    ImageSaving событие произойдет перед сохранением каждого изображения. В этом событии вы можете получить информацию об изображении, запретить сохранение изображения или отменить процесс сохранения изображения. Событие ImageSaved произойдет после сохранения каждого изображения. В этом событии вы можете получить информацию о ходе процесса сохранения изображений или отменить процесс сохранения изображений.

    Пример

    Этот пример показывает, как сохранить коллекцию изображений асинхронно.

    
    ''' <summary>
    ''' Indicates whether image collection saving process is finished.
    ''' </summary>
    Private _isImagesSavingProcessFinished As Boolean = False
    
    
    
    ''' <summary>
    ''' Example of ImageCollection.SaveAsync.
    ''' </summary>
    Public Sub ImageCollectionSaveAsyncExample()
        ' create image collection
        Dim images As New Vintasoft.Imaging.ImageCollection()
    
        ' add several images into collection
        ' [ do not forget to set your image file paths here! ]
        images.Add("testImage1.jpg")
        images.Add("testImage2.bmp")
        images.Add("testImage3.png")
    
        ' create FileStream for saving
        Dim saveStream As New System.IO.FileStream("new-file-name.tif", System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite)
    
        ' create the TiffEncoder instance
        Dim multipageEncoder As Vintasoft.Imaging.Codecs.Encoders.MultipageEncoderBase = New Vintasoft.Imaging.Codecs.Encoders.TiffEncoder()
    
        ' subscribe to the image collection events
        AddHandler images.ImageCollectionSaving, New System.EventHandler(Of Vintasoft.Imaging.ImageCollectionSavingEventArgs)(AddressOf images_ImageCollectionSaving)
        AddHandler images.ImageCollectionSaved, New System.EventHandler(AddressOf images_ImageCollectionSaved)
        AddHandler images.ImageCollectionSavingProgress, New System.EventHandler(Of Vintasoft.Imaging.ProgressEventArgs)(AddressOf images_ImageCollectionSavingProgress)
        AddHandler images.ImageCollectionSavingFinished, New System.EventHandler(AddressOf images_ImageCollectionSavingFinished)
        AddHandler images.ImageSavingException, New System.EventHandler(Of Vintasoft.Imaging.ExceptionEventArgs)(AddressOf images_ImageSavingException)
    
        _isImagesSavingProcessFinished = False
        ' save images to file and switch source
        multipageEncoder.SaveAndSwitchSource = True
    
        ' save image collection asynchronously
        images.SaveAsync(saveStream, multipageEncoder)
    
        ' wait while image saving process is finished
        While Not _isImagesSavingProcessFinished
            System.Threading.Thread.Sleep(1)
        End While
        
    
    
        ' close FileStream
        saveStream.Close()
    End Sub
    
    ''' <summary>
    ''' Image collection saving process is started.
    ''' </summary>
    Private Sub images_ImageCollectionSaving(sender As Object, e As Vintasoft.Imaging.ImageCollectionSavingEventArgs)
        System.Console.Write("Progress: ")
    End Sub
    
    ''' <summary>
    ''' Image collection saving process is in progress.
    ''' </summary>
    Private Sub images_ImageCollectionSavingProgress(sender As Object, e As Vintasoft.Imaging.ProgressEventArgs)
        System.Console.Write(String.Format("{0}% ", e.Progress))
    End Sub
    
    ''' <summary>
    ''' Image collection is saved successfully.
    ''' </summary>
    Private Sub images_ImageCollectionSaved(sender As Object, e As System.EventArgs)
        System.Console.WriteLine("Images are saved successfully.")
    End Sub
    
    ''' <summary>
    ''' Image collection is NOT saved.
    ''' </summary>
    Private Sub images_ImageSavingException(sender As Object, e As Vintasoft.Imaging.ExceptionEventArgs)
        System.Console.WriteLine(e.Exception.Message)
        System.Console.WriteLine("Images are NOT saved.")
    End Sub
    
    ''' <summary>
    ''' Image collection saving process is finished.
    ''' </summary>
    Private Sub images_ImageCollectionSavingFinished(sender As Object, e As System.EventArgs)
        Dim images As Vintasoft.Imaging.ImageCollection = DirectCast(sender, Vintasoft.Imaging.ImageCollection)
    
        ' unsubscribe from image collection events
        RemoveHandler images.ImageCollectionSaving, AddressOf images_ImageCollectionSaving
        RemoveHandler images.ImageCollectionSavingProgress, AddressOf images_ImageCollectionSavingProgress
        RemoveHandler images.ImageCollectionSaved, AddressOf images_ImageCollectionSaved
        RemoveHandler images.ImageSavingException, AddressOf images_ImageSavingException
        RemoveHandler images.ImageCollectionSavingFinished, AddressOf images_ImageCollectionSavingFinished
    
        ' indicate that image collection saving process is finished
        _isImagesSavingProcessFinished = True
    End Sub
    
    
    
    /// <summary>
    /// Indicates whether image collection saving process is finished.
    /// </summary>
    bool _isImagesSavingProcessFinished = false;
    
    
    
    /// <summary>
    /// Example of ImageCollection.SaveAsync.
    /// </summary>
    public void ImageCollectionSaveAsyncExample()
    {
        // create image collection
        Vintasoft.Imaging.ImageCollection images = new Vintasoft.Imaging.ImageCollection();
    
        // add several images into collection
        // [ do not forget to set your image file paths here! ]
        images.Add("testImage1.jpg");
        images.Add("testImage2.bmp");
        images.Add("testImage3.png");
    
        // create FileStream for saving
        System.IO.FileStream saveStream = new System.IO.FileStream(
            "new-file-name.tif", System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite);
    
        // create the TiffEncoder instance
        Vintasoft.Imaging.Codecs.Encoders.MultipageEncoderBase multipageEncoder =
            new Vintasoft.Imaging.Codecs.Encoders.TiffEncoder();
    
        // subscribe to the image collection events
        images.ImageCollectionSaving +=
            new System.EventHandler<Vintasoft.Imaging.ImageCollectionSavingEventArgs>(images_ImageCollectionSaving);
        images.ImageCollectionSaved += new System.EventHandler(images_ImageCollectionSaved);
        images.ImageCollectionSavingProgress += new System.EventHandler<Vintasoft.Imaging.ProgressEventArgs>(
            images_ImageCollectionSavingProgress);
        images.ImageCollectionSavingFinished += new System.EventHandler(images_ImageCollectionSavingFinished);
        images.ImageSavingException += new System.EventHandler<Vintasoft.Imaging.ExceptionEventArgs>(
            images_ImageSavingException);
    
        _isImagesSavingProcessFinished = false;
        // save images to file and switch source
        multipageEncoder.SaveAndSwitchSource = true;
    
        // save image collection asynchronously
        images.SaveAsync(saveStream, multipageEncoder);
    
        // wait while image saving process is finished
        while (!_isImagesSavingProcessFinished)
        {
            System.Threading.Thread.Sleep(1);
        };
    
        // close FileStream
        saveStream.Close();
    }
    
    /// <summary>
    /// Image collection saving process is started.
    /// </summary>
    private void images_ImageCollectionSaving(object sender, Vintasoft.Imaging.ImageCollectionSavingEventArgs e)
    {
        System.Console.Write("Progress: ");
    }
    
    /// <summary>
    /// Image collection saving process is in progress.
    /// </summary>
    private void images_ImageCollectionSavingProgress(object sender, Vintasoft.Imaging.ProgressEventArgs e)
    {
        System.Console.Write(string.Format("{0}% ", e.Progress));
    }
    
    /// <summary>
    /// Image collection is saved successfully.
    /// </summary>
    private void images_ImageCollectionSaved(object sender, System.EventArgs e)
    {
        System.Console.WriteLine("Images are saved successfully.");
    }
    
    /// <summary>
    /// Image collection is NOT saved.
    /// </summary>
    private void images_ImageSavingException(object sender, Vintasoft.Imaging.ExceptionEventArgs e)
    {
        System.Console.WriteLine(e.Exception.Message);
        System.Console.WriteLine("Images are NOT saved.");
    }
    
    /// <summary>
    /// Image collection saving process is finished.
    /// </summary>
    private void images_ImageCollectionSavingFinished(object sender, System.EventArgs e)
    {
        Vintasoft.Imaging.ImageCollection images = (Vintasoft.Imaging.ImageCollection)sender;
    
        // unsubscribe from image collection events
        images.ImageCollectionSaving -= images_ImageCollectionSaving;
        images.ImageCollectionSavingProgress -= images_ImageCollectionSavingProgress;
        images.ImageCollectionSaved -= images_ImageCollectionSaved;
        images.ImageSavingException -= images_ImageSavingException;
        images.ImageCollectionSavingFinished -= images_ImageCollectionSavingFinished;
    
        // indicate that image collection saving process is finished
        _isImagesSavingProcessFinished = true;
    }
    
    

    Требования

    Целевые платформы: .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

    Смотрите также