Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2020, 22:26   #1
melky
Пользователь
 
Регистрация: 27.05.2018
Сообщений: 46
По умолчанию MemoryStream чтение и запись и svg.dll

Пару дней уже мучаюсь.

svg файл читается в MemorryStream в виде

Код:
using (MemoryStream memStream = new MemoryStream(Image.Data))
                {
                    SvgDocument svgDocument = SvgDocument.Open<SvgDocument>(memStream);
                    source = svgDocument.Draw();
                 }
Нужно после открытия документа, обработать его средствами svg.dll, потом записать изменения в память и только потом сделать .Draw()

Запись в тот же memStream дает ошибку
melky вне форума Ответить с цитированием
Старый 26.03.2020, 12:00   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от melky Посмотреть сообщение
Запись в тот же memStream дает ошибку
Какую?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 26.03.2020, 13:26   #3
melky
Пользователь
 
Регистрация: 27.05.2018
Сообщений: 46
По умолчанию

"Поток в памяти не подлежит расширению"

Оказалось все сложнее, но не могу понять как это изменить. Разработчик пока молчит. Исходники есть.

Есть массив в классе Image - public byte[] Data { get; set; }

В другом cs есть код с установкой размера этого массива с предварительной инициализацией
image = new Image();

и далее чтение файлового потока
image.Data = new byte[fileStream.Length];
fileStream.Read(image.Data, 0, image.Data.Length);

а уже в другом cs как раз открытие потока памяти на указанный массив Image.Data

Мне нужно подменить данные в этом массиве, но они больше размером установленного для конкретного Image.Data так как svg.dll формирует свои служебные строки и атрибуты...

Последний раз редактировалось melky; 26.03.2020 в 13:46.
melky вне форума Ответить с цитированием
Старый 26.03.2020, 14:23   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от melky Посмотреть сообщение
формирует свои служебные строки и атрибуты...
Так если вы пропустите эти строки и закинете свой массив данных как библиотека поймет как ей с этим работать??
Что сделать то хотите??
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 26.03.2020, 15:09   #5
melky
Пользователь
 
Регистрация: 27.05.2018
Сообщений: 46
По умолчанию

Хочу подменять данные картинки. Собственно победил. Может коряво, но если идея срастется, то разработчик потом подправит...

Я все пытался скопировать через промежуточный поток памяти и получал то одну, то другую ошибку. Оказалось все проще. Надо было копировать не поток в поток, а изменить (в данном случае создать по новой Image.Data = new byte[размер нового потока];

И дать команду Image.Data = newStream.ToArray();

И блок данных подменился на мой. Далее программа восприняла его с пометкой "свой" и продолжила работать...

WorldMaster это особенность svg.dll, мой файл картинки svg не имеет служебных строк и части атрибутов для изображения, а эта библиотека их добавляет при чтении потока, соответственно размер немного больше, чем исходный код xml в моем svg

Последний раз редактировалось melky; 26.03.2020 в 15:12.
melky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS и PHP запись и чтение файла. Сергей Собянин Помощь студентам 2 16.09.2018 21:07
Чтение/запись в/из фаил(а) fishcat Общие вопросы C/C++ 4 27.06.2014 10:47
Запись на ЖД из MemoryStream в многопоточном приложении Pcrepair Общие вопросы Delphi 6 26.08.2013 01:50
Чтение и запись файлов schmitz C# (си шарп) 3 29.05.2013 00:51
Чтение и запись из файлов Rocky095 Помощь студентам 4 08.12.2012 10:52