![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ошибка загрузки изображения из 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
?