Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.06.28;
Скачать: [xml.tar.bz2];

Вниз

ошибка загрузки изображения из 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.004 c
2-1241679348
worldmen
2009-05-07 10:55
2009.06.28
Создать большое меню


2-1241611459
Mishenka
2009-05-06 16:04
2009.06.28
Фокус при скроллинге в ListViewСкроллинг


15-1240437869
NailMan
2009-04-23 02:04
2009.06.28
Процентные соотношения. Какие правила?


15-1240584679
Кто б сомневался
2009-04-24 18:51
2009.06.28
Даже и не думайте пользоваться функцией Wow64DisableWow64FsRedire


15-1240518603
Юрий
2009-04-24 00:30
2009.06.28
С днем рождения ! 24 апреля 2009 пятница





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский