Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.06.28;
Скачать: CL | DM;

Вниз

ошибка загрузки изображения из TMemoryStream   Найти похожие ветки 

 
novai   (2009-05-12 10:33) [0]

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

?


 
{RASkov} ©   (2009-05-12 10:34) [1]

TempStream.Position:=0
?


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

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


 
Palladin ©   (2009-05-12 10:37) [3]


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

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


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


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

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


 
{RASkov} ©   (2009-05-12 10:42) [5]

> [4] novai   (12.05.09 10:39)

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


 
Palladin ©   (2009-05-12 10:43) [6]

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


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

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

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


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

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


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

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

Кодом из [0]?

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

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


 
Ega23 ©   (2009-05-12 11:01) [10]


> в 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 нефигово добавить...


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

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


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

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


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


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

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


 
Anatoly Podgoretsky ©   (2009-05-12 11:23) [14]

> Плохиш  (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 12:03) [15]


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

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


 
Palladin ©   (2009-05-12 12:16) [16]

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


 
Anatoly Podgoretsky ©   (2009-05-12 12:47) [17]


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

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


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


> 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;



Страницы: 1 вся ветка

Текущий архив: 2009.06.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
15-1240248508
Маэстро
2009-04-20 21:28
2009.06.28
Никто не сталкивался с такой проблемой в WebMoney Keeper?


2-1241585670
lewka
2009-05-06 08:54
2009.06.28
Работа с сылками в TWebBrowser


2-1241089539
Franzy
2009-04-30 15:05
2009.06.28
Абсолютно необъяснимый глюк


15-1240556883
tesseract
2009-04-24 11:08
2009.06.28
Прогресс виртуализации


4-1212106372
San1712
2008-05-30 04:12
2009.06.28
Как произвести чтение/запись в определённый кластер ?