Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 24.03.2020, 23:26   #1
melky
Пользователь
 
Регистрация: 27.05.2018
Сообщений: 31
По умолчанию 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, 13:00   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,526
По умолчанию

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

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

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

Есть массив в классе 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 в 14:46.
melky вне форума Ответить с цитированием
Старый 26.03.2020, 15:23   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,526
По умолчанию

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

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

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

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

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

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS и PHP запись и чтение файла. Сергей Собянин Помощь студентам 2 16.09.2018 22: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


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS