Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.04.2015, 05:03
Аватар для Помидоркин
Помидоркин Помидоркин вне форума
Начинающий
 
Регистрация: 07.10.2012
Адрес: Дедовск
Сообщения: 110
Версия Delphi: Rio 10.3
Репутация: 10
По умолчанию jpeg error #42

Компонент отрисовывае на канве JPEGImage - загружается из потока в конструкторе и отрисовывается на канве
Код:
type
    TTumbnale = class(TGraphicControl)
     ----------------------
    protected
     Img: TJPEGImage;
    public
     constructor Create(AOwner:TComponent; AName:TComponentName;
      ImgStream:TMemoryStream);reintroduce;
     procedure Paint;override;
    end;

implementation

constructor TTumbnale.Create(AOwner:TComponent;  ImgStream:TMemoryStream);
begin
 inherited Create(AOwner);
 Parent:= AOwner as TWinControl;
 Img:= TJPEGImage.Create;
 Img.LoadFromStream(ImgStream);
end;

procedure TTumbnale.Paint;
begin
 inherited Paint;
 Canvas.StretchDraw(Rect(2,2,242,182),Img);
end;
Загружаю картинку в поток - IdHTTP.Get, получаю "jpeg error #42"
Код:
procedure TForm1.Button2Click(Sender: TObject);
var t: TTumbnale;  s: TMemoryStream;  h: TIdHTTP;
begin
  s:= TMemoryStream.Create;
  h:= TIdHTTP.Create(Self); 
  h.HandleRedirects:= True;
  h.Get('http://fobr.ru/wp-content/uploads/2013/11/zapr_0.jpg', s);
  t:= TTumbnale.Create(ScrollBox1, 'tumb1',  s); //здесь ошибка 42
  s.Free;  h.Free;
end;
проверяю - файл сохраняется
Код:
begin
  s:= TMemoryStream.Create;
  h:= TIdHTTP.Create(Self); 
  h.HandleRedirects:= True;
  h.Get('http://fobr.ru/wp-content/uploads/2013/11/zapr_0.jpg',s);
  s.SaveToFile('Temp\zapr_0.jpg'); //Файл сохраняется
  s.Free;  h.Free;
end;
Загружаю картинку в поток из файла все отрисовывается
Код:
begin
  s:= TMemoryStream.Create;
  s.LoadFromFile('Temp\zapr_0.jpg');
  t:= TTumbnale.Create(ScrollBox1,'tumb1', s); //здесь все прекрасно срабатывает
  s.Free;
end;
делать через сохранение файла - вообще не кошерно
и что это за ошибка #42?
Ответить с цитированием
  #2  
Старый 25.04.2015, 08:54
Аватар для @Rafa3L
@Rafa3L @Rafa3L вне форума
Начинающий
 
Регистрация: 09.11.2011
Адрес: Москва
Сообщения: 144
Версия Delphi: XE2
Репутация: 11216
По умолчанию

Код:
...
h.Get( ...
s.Position:= 0;
t:= ...
...
__________________
Помогаю платно.
Помогаю иногда бесплатно.

Последний раз редактировалось @Rafa3L, 25.04.2015 в 09:05.
Ответить с цитированием
Этот пользователь сказал Спасибо @Rafa3L за это полезное сообщение:
Помидоркин (25.04.2015)
  #3  
Старый 22.05.2015, 10:13
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

После загрузки:
Код:
S.Seek(0, soFromBeginning);

Последний раз редактировалось Vayrus, 22.05.2015 в 10:17.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:28.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter