Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ошибка загрузки изображения из TMemoryStream [D6, XP]


novai ©   (2009-05-12 10:33:00) 

Почему код приводит к ошибке Bitmap image is not valid:
image1.Picture.Bitmap.LoadFromStream(TempStream);
а так работает:
TempStream.SaveToFile('c:\2.bmp');
image1.Picture.Bitmap.LoadFromFile('c:\2.bmp');

?


Плохиш   (2009-05-12 14:07:00) [1]


> Anatoly Podgoretsky ©   (12.05.09 12:47) [17]
>
>
> > Плохиш ©   (12.05.09 12:03) [15]
>
> И правда где? :-)

Правда, как всегда, в исходниках ;-)

procedure TBitmap.LoadFromStream(Stream: TStream);
begin
 ReadStream(Stream, Stream.Size - Stream.Position);
end;


Anatoly Podgoretsky   (2009-05-12 12:47:00) [2]


> Плохиш ©   (12.05.09 12:03) [15]

И правда где? :-)


Palladin   (2009-05-12 12:16:00) [3]

У меня в справке это не указано.


Плохиш   (2009-05-12 12:03:00) [4]


> Anatoly Podgoretsky ©   (12.05.09 11:23) [14]

Хм, и где в ветке говориться об использовании метода TMemoryStream.LoadFromStream?
Речь шла о методе TBitmap.


Anatoly Podgoretsky   (2009-05-12 11:23:00) [5]

> Плохиш  (12.05.2009 11:12:13)  [13]

В справке указано, что с 0

> LoadFromStream always sets the Position of the source stream to 0, before streaming in the number of bytes indicated by the source stream’s Size property


Плохиш   (2009-05-12 11:12:00) [6]


> novai   (12.05.09 10:36) [2]
>
> Спасибо! Помогло, хотя я думал, что LoadFromStream подразумевает
> чтение с position=0

Разве в справке не написано, что с текущей позиции?


novai   (2009-05-12 11:09:00) [7]

Спасибо Ega23 и всем, разобрался...


novai   (2009-05-12 11:02:00) [8]

image1.Picture. Graphic.LoadFromStream(TempStream);
вообще не грузит ничего...


Ega23   (2009-05-12 11:01:00) [9]


> в uses добавил Jpeg, но он грузит только bitmap,
> а как можно в image1 загрузить jpg из TMemoryStream ?



uses JPEG;

var
 jpg : TJpegImage;
 ms : TMemoryStream;
begin
   
 ms := TMemoryStream.Create;
 jpg := TJpegImage.Create;
 try
   .... SavetoStream(ms);
   ms.Position := 0;
   jpg.LoadFromStream(ms);
   Image1.Picture.Assign(jpg);
 finally
   jpg.Free;
   ms.Free;
 end;

end;


Ну и try..except нефигово добавить...


{RASkov}   (2009-05-12 10:59:00) [10]

> [8] novai   (12.05.09 10:51)
> в uses добавил Jpeg, но он грузит только bitmap,

Кодом из [0]?

> image1.Picture. Bitmap.LoadFromStream(TempStream);

Сюда jpeg точно "не влезет")


novai   (2009-05-12 10:51:00) [11]

в uses добавил Jpeg, но он грузит только bitmap,
а как можно в image1 загрузить jpg из TMemoryStream ?


novai   (2009-05-12 10:46:00) [12]

судя по
procedure TBitmap.LoadFromStream(Stream: TStream);
begin
 ReadStream(Stream, Stream.Size - Stream.Position);
end;

он работает с текущей Stream position, а не с 0?


Palladin   (2009-05-12 10:43:00) [13]

извиняюсь... я не прав... попутал LoadFromStream и LoadFromFile


{RASkov}   (2009-05-12 10:42:00) [14]

> [4] novai   (12.05.09 10:39)

потому что он (LoadFromStream) производит чтение с position=0 и весь, но его (Position) не выставляет в нужную позицию....
А что бы не парится с позицией в потоке и есть метод LoadFromFile..... Посмотри его реализацию навсяк...)


novai   (2009-05-12 10:39:00) [15]


> ты правильно думал

тогда почему помогло?


Palladin   (2009-05-12 10:37:00) [16]


> Помогло, хотя я думал, что LoadFromStream подразумевает
> чтение с position=0 и весь

ты правильно думал


novai   (2009-05-12 10:36:00) [17]

Спасибо! Помогло, хотя я думал, что LoadFromStream подразумевает чтение с position=0 и весь


{RASkov}   (2009-05-12 10:34:00) [18]

TempStream.Position:=0
?


Наверх

Титульная страница Поиск, карта сайта Написать письмо