Не удается сохранить и заново создать изображение в формате JPEG в / из потока - PullRequest
0 голосов
/ 29 апреля 2020

Надеюсь, это просто некоторые детали, которые мне не хватает ...

Я создаю модульный тест для конвертера, который вставляет JPG в новый PDF-файл c. И новый документ, и Jpeg сохраняются в потоках памяти, а затем оба потока передаются. PDF do c работает нормально, но Jpeg сохранит в поток, и тогда я не смогу создать из него новый JpegImage. Код достаточно прост ...

        converter = new Converters.JpegToPdfConverter();

        jpegConverterSourceStream = new MemoryStream();
        sourceStream = new MemoryStream();
        destinationStream = new MemoryStream();

        var document = new Document();
        var page = document.Pages.Add();
        page.PageInfo = testPageInfo;

        document.Save(destinationStream);

        var img = new Aspose.Imaging.FileFormats.Jpeg.JpegImage(imageWidth, imageHeight);

        img.Save(jpegConverterSourceStream, ImageOptions);

        jpegConverterSourceStream.CopyTo(sourceStream);

        JpegImage img2 = new JpegImage(sourceStream);

// и последняя строка завершается с ошибкой

ImageLoadException: невозможно открыть изображение. В настоящее время формат файла изображения может не поддерживаться.

Это не имеет никакого смысла ... Я просто сохранил тот же класс. Что-то смешное происходит при преобразовании в / из потока памяти?

1 Ответ

2 голосов
/ 29 апреля 2020

Незначительная проблема - вам нужно сбросить позицию потока перед копированием с него -

jpegConverterSourceStream.Position = 0;
jpegConverterSourceStream.CopyTo(sourceStream);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...