|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.10.2007, 19:20 | #1 | |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 266
|
сохранение изображения с TFileStream
Здравствуйте!
Я записываю в файл разные данные (с помощью TFileStream). Так легко записывать текст или структурные данные. Но сохранить таким образом изображение в файл не получается. Если изначальная картинка весит 170 Кб, то полученный файл - всего 4 байта! Посмотрите, что здесь не так: Цитата:
|
|
16.10.2007, 20:21 | #2 |
Владимир М.
Участник клуба
Регистрация: 30.10.2006
Сообщений: 1,289
|
файл GRAPHICS.pas :
Код:
Берегите друг друга!
Последний раз редактировалось Virtson; 16.10.2007 в 20:23. |
16.10.2007, 21:36 | #3 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Что-то очень уж сложно, по-моему.
У меня вот что получилось: Код:
Последний раз редактировалось mihali4; 17.10.2007 в 17:01. |
17.10.2007, 19:55 | #4 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 266
|
А как ее потом из этого файла извлечь?
|
18.10.2007, 10:48 | #5 |
Пользователь
Регистрация: 28.12.2006
Сообщений: 75
|
Лично я делал так
potok := TMemoryStream.Create; FileStream := TFileStream.Create(ChangeFileExt(ad ,'.tmp'), fmCreate); Writer := TWriter.Create (FileStream, $1000); BitMap.SaveToStream(potok) Buffer := potok.Memory; Size := potok.Size; Writer.WriteInteger (Size); Writer.Write (Buffer^, Size); Writer.Free; FileStream.Free; potok1.Free; только извлечение из файла должно быть в томже порядке как записывали Последний раз редактировалось devi409; 18.10.2007 в 10:53. |
18.10.2007, 19:47 | #6 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 266
|
а извлечь эту картинку из файла не получается...
Кстати, а так можно любой файл сохранять? |
18.10.2007, 20:47 | #7 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Цитата:
Но это так, просто для проверки. А извлечь - если самое простое: if OpenDialog1.Execute then Image1.Picture.Graphic.LoadFromFile (OpenDialog1.FileName); И тут по барабану, какое у файла расширение, лишь бы он был картинкой... А если нужно опять с использованием потоков... Ну, заставьте себя хоть чуть-чуть потрудиться и переделайте мой вариант в обратный, для чтения, САМОСТОЯТЕЛЬНО. Последний раз редактировалось mihali4; 18.10.2007 в 20:55. |
|
19.10.2007, 18:33 | #8 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 266
|
Что-то не получается... Что тут не так:
var fs1: TMemoryStream; fs2:TFileStream; b: TBitmap; begin fs2 := TFileStream.Create('c:\123.abc', fmOpenRead); fs1:= TMemoryStream.Create; fs1.CopyFrom(fs2,0); Image1.Picture.Graphic.LoadFromStre am(fs1); fs1.FreeInstance; fs2.FreeInstance; |
20.10.2007, 08:29 | #9 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 266
|
Подскажите, пожайлуста. Я с этими потоками вообще не врубаюсь, и что такое CopyFrom - темный лес.
Я читал литературу, что TFileStream имеет методы Write, Read, но с ними сам файл в файл не записать... |
20.10.2007, 08:39 | #10 |
Владимир М.
Участник клуба
Регистрация: 30.10.2006
Сообщений: 1,289
|
мой пример был бы такой :
Код:
а Ваш код тоже использует этот метод, только скрыто )
Берегите друг друга!
Последний раз редактировалось Virtson; 20.10.2007 в 08:41. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" | ruelCrow | Общие вопросы .NET | 3 | 10.07.2008 23:29 |
Проблема с record,string,TFileStream | AngelOfDeath | Общие вопросы Delphi | 6 | 31.05.2008 11:24 |
Передача функции TServerSocket и TFileStream | dns-s | Работа с сетью в Delphi | 2 | 26.03.2008 21:15 |
проблемы с TFileStream | andrey4623 | Общие вопросы Delphi | 9 | 01.11.2007 20:44 |
TFilestream | UnD)eaD)Snake | Win Api | 1 | 27.09.2007 21:22 |