Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2017, 14:48   #1
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию как сделать чтобы на image1 загрузился все типы картинок (jpeg, png, bmp) через tmemorystream

как сделать чтобы на image1 открывался все типы картинок (jpeg, png, bmp) через tmemorystream

Код:
png:=Tjpegimage.Create;
 PNj := TPNGObject.Create;
 bmp:=TBitmap.Create;

mStream := TmemoryStream.create;

pnj.LoadFromstream(mStream);
bmp.Assign(pnj);
png.Assign(bmp);

Image1.Picture.assign(png);

Последний раз редактировалось alman12; 20.04.2017 в 15:11.
alman12 вне форума Ответить с цитированием
Старый 20.04.2017, 14:59   #2
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 272
По умолчанию

Можно поподробнее?
Filka вне форума Ответить с цитированием
Старый 20.04.2017, 15:08   #3
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

загружаю картинку на Tmemorystream. Но в image1 открывается один тип картинок. Как сделать чтобы все типы картинок открывались

Последний раз редактировалось alman12; 20.04.2017 в 15:11.
alman12 вне форума Ответить с цитированием
Старый 20.04.2017, 15:38   #4
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

Код:
var
mStream : TmemoryStream;
strin:widestring;
png:tjpegimage;
 PNj: TPNGObject;
 BMP:TBitmap;
http:tidhttp;
begin
HTTP:=TIdHTTP.Create(Self);
mStream := TmemoryStream.create;
png:=Tjpegimage.Create;
 PNj := TPNGObject.Create;
 bmp:=TBitmap.Create;

strin:=http.get(edit1.text);
http.get(strin,mstream);

MStream.Position := 0;

pnj.LoadFromstream(mStream);
bmp.Assign(pnj);
png.Assign(bmp);

Image1.Picture.assign(png);
png.Free;
 mstream.Free;
 end;
alman12 вне форума Ответить с цитированием
Старый 20.04.2017, 17:27   #5
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 272
По умолчанию

Код:
function GetGraphicClass(const AStream: TMemoryStream): TGraphicClass;
var
  Sig: array[0..1] of Word;
begin
  Result := nil;
  if Assigned(AStream) and (AStream.Size >= SizeOf(Sig)) then
  begin
    AStream.Position := 0;
    AStream.Read(Sig, SizeOf(Sig));
    if Sig[0] = $4D42 then
      Result := TBitmap
    else if Sig[0] = $D8FF then
      Result := TJPEGImage
    else if (Sig[0] = $4947) and (Sig[1] = $3846) then
      Result := TGIFImage
    else if (Sig[0] = $5089) and (Sig[1] = $474E) then
      Result := TPNGImage; // TPNGObject
  end;
end;

function LoadGraphic(const AStream: TMemoryStream): TGraphic;
var
  GraphicClass: TGraphicClass;
begin
  Result := nil;
  GraphicClass := GetGraphicClass(AStream);
  if Assigned(GraphicClass) then
  begin
    Result := GraphicClass.Create;
    AStream.Position := 0;
    Result.LoadFromStream(AStream);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  cURL = 'http://programmersforum.ru/images/1070/misc/logo.gif';
var
  MS: TMemoryStream;
  Graphic: TGraphic;
begin
  MS := TMemoryStream.Create;
  try
    IdHTTP1.Get(cURL, MS);
    Graphic := LoadGraphic(MS);
    if Assigned(Graphic) then
      try
        Image1.Picture.Assign(Graphic);
      finally
        Graphic.Free;
      end;
  finally
    MS.Free;
  end;
end;

Последний раз редактировалось Filka; 21.04.2017 в 14:15.
Filka вне форума Ответить с цитированием
Старый 23.04.2017, 00:03   #6
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

Спасибо за помощ функция работает
alman12 вне форума Ответить с цитированием
Старый 23.04.2017, 05:43   #7
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 272
По умолчанию

Пожалуйста.
Filka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать чтобы выводились все написанные сообщения nikytt PHP 0 09.10.2016 22:35
Конвертация PNG GIF BMP в JPG в TMemoryStream Pcrepair Общие вопросы Delphi 3 04.03.2015 22:13
Ищу компонент конвертер(Bmp, Png, Tif, Gif...) в Jpeg ArtGrek Компоненты Delphi 16 25.05.2011 10:05
есть ли компонент,чтобы иметь прямой доступ к пикселям jpeg без конвертирования в bmp? Dima_Dima Свободное общение 1 26.05.2010 19:00
есть ли компонент,чтобы иметь прямой доступ к пикселям jpeg без конвертирования в bmp? Dima_Dima Компоненты Delphi 14 26.05.2010 18:30