![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| KLUBS |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 11.2.2007 Где: Спб Репутация: 1 Всего: 1 |
Всем Привет.
Пишу значит я простенький графический редактор, написал уже прилично фильтров, как начал делать обработку MetaData пошли ошибки... В итоге понял, что не работает сохранение в файл откуда изображение загружено: Load
Save
Не подскажете как загружать и сохранять изображение в тот же файл??? |
||||
|
|||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
где вызывается Dispose() для image? Здается мне, что именно эта строчка и лочит ресурс. Нужно считывать картинку в буфер (в поток или массив или еще куда) и освобождать ресурс, и потом только писать в него. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| KLUBS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 11.2.2007 Где: Спб Репутация: 1 Всего: 1 |
Ой... вызывается при закрытии самой главной формы
Я же считываю в Bitmap а дальше просто с ней работаю.. изменяю пиксели, вот... двое суток подряд бъюсь головой, уже по мойму все перепробовал.. никак не удается записать в исходный фалй :( |
|||
|
||||
| KLUBS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 11.2.2007 Где: Спб Репутация: 1 Всего: 1 |
Нашел вот что:
ПРЕДУПРЕЖДЕНИЕ Метод Save() не сработает, если ему будет передано имя файла, уже открытого средствами GDI+. Это происходит, видимо, потому, что файл остается занятым вплоть до выполнения деструктора Bitmap. Другая проблема возникнет, если файл доступен для записи, но имеет длину, превышающую результирующий размер изображения. Save() не производит усечения, и в конце файла останется "мусор". Эти проблемы известны Microsoft. Вторая уже нашла отражение в Knowledge Base Как загрузить Bitmap.. чтобы потом можно было его сохранить в исходный файл?)) |
|||
|
||||
| farad |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 1.11.2007 Репутация: -1 Всего: 6 |
и после тоже... возмжно освобождение происходит в деструкторе
зы чем читаю, сам не знаю. попробуй клонировать исходный битмап, потом вызвать Dispose() затем обнулить все ссылки на него и ввызвать GC.Collect(); и работай с клоном. должно помочь Это сообщение отредактировал(а) farad - 31.1.2008, 18:05 |
|||
|
||||
| KLUBS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 11.2.2007 Где: Спб Репутация: 1 Всего: 1 |
можешь написать подровнее что ты имеешь ввиду? исходники в первом посте, плииз
|
|||
|
||||
| farad |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 1.11.2007 Репутация: -1 Всего: 6 |
||||
|
||||
| KLUBS |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 11.2.2007 Где: Спб Репутация: 1 Всего: 1 |
имеешь ввиду это: \\ поправь если не так
|
||||
|
|||||
| farad |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 1.11.2007 Репутация: -1 Всего: 6 |
короче попробовал, че сам предложил - нефурычит - тажа ошибка. Не закрывается этот файл. Пробовал, через поток получить - тоже нифига, видимо FRomStream и FromFile как-то по разному читают. Остается одно - перед чтением файла, скопировать его во временный файл, прочитать этот временный файл, а потом уже сохранять как хочешь...
|
|||
|
||||
| KLUBS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 11.2.2007 Где: Спб Репутация: 1 Всего: 1 |
||||
|
||||
| farad |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 1.11.2007 Репутация: -1 Всего: 6 |
все работает:
|
|||
|
||||
| KLUBS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 11.2.2007 Где: Спб Репутация: 1 Всего: 1 |
Да, именно так и сделал
просто нашел еще пару ошибок у Microsoft'a Добавлено через 7 минут и 54 секунды Только еще маленькая проблемка)) когда этот файл надо удалять?))) |
|||
|
||||
| farad |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 1.11.2007 Репутация: -1 Всего: 6 |
||||
|
||||
| KLUBS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 11.2.2007 Где: Спб Репутация: 1 Всего: 1 |
Создать папку в дир. Temp ???
а как узнать когда файлы разлочаться?) |
|||
|
||||
| Moid |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 396 Регистрация: 27.3.2006 Репутация: 2 Всего: 3 |
Как говорят: помахать кулаками после драки... или как-то так...
Сам щас сталкнулся с такой проблемой. Может кому пригодится:
Дальше можно сохранять обычным способом:
-------------------- "Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |