Конференция "Media" » Help! Загрузка картинок из интернет в TImage
 
  • syserg (25.07.09 19:34) [0]
    Друзья, помогите. Нужно, чтобы можно было загрузить картинку из интернета в TImage форматов jpg, png, gif и пр. Или где взять исходники timage picture dialog, ведь он нормально открывает.
    Я так понимаю, что делается это через MemoryStream, но как - не знаю.

    Нашел следующий код:

    procedure TForm1.DownloadJPG(url:string;im:TImage);
    var
    strStream: String;
    memStream: TMemoryStream;
    jpegimg: TJPEGImage;
    begin
    try
    strStream := Form1.idhttp1.Get (url);
    except
    //ShowMessage('Image was not found');
    Exit;
    end;
    memStream := TMemoryStream.Create;
    jpegimg := TJPEGImage.Create;
    try
    memStream.Write(strStream[1], Length(strStream));
    memStream.Position := 0;
    jpegimg.LoadFromStream(memStream);
    im.Picture.Assign(jpegimg);
    finally
    memStream.Free;
    jpegimg.Free;
    end;
    end;

    Пытаюсь загрузить png. Не хочет. Может есть какой-нибудь код для загрузки любых форматов?
  • KilkennyCat © (25.07.09 19:54) [1]

    > Не хочет

    А ты его вежливо попроси. Или убеди как-нибудь. Может, захочет?
  • syserg (25.07.09 20:10) [2]
    На коленях стоял, умолял... Ни в какую...
  • KilkennyCat © (25.07.09 21:02) [3]
    значит, он не не хочет, а не может.
    www.torry.net - там есть такие, какие могут.
  • Dennis$ (01.10.11 13:09) [4]
    procedure TForm1.Button1Click(Sender: TObject);
    var
    memStream: TMemoryStream;
    pngimg:TPNGObject;
    strStream, img_thumbs: string;
    begin
    img_thumbs:='http://markuss13.narod.ru/Nitzhe.png';
    memStream := TMemoryStream.Create;
    strStream := idhttp1.Get(img_thumbs);
    memStream.Write(strStream[1], Length(strStream));
    memStream.Position := 0;
    pngimg:=TPNGObject.Create;
    pngimg.LoadFromStream(memStream);
    Image1.Picture.Assign(pngimg);
    memStream.Free;
    pngimg.Free;
    end;
  • seltrix (07.10.17 19:48) [5]
    procedure TForm1.DownloadJPG(url:string; place:TImage);
    var
     Stream: TMemoryStream;
     jpegimg: TJPEGImage;
    begin
     jpegimg := TJPEGImage.Create;
     try
       Stream:=TMemoryStream.Create;
       IdHTTP1.Get(url, Stream);

       Stream.Position := 0;
       jpegimg.LoadFromStream(Stream);
       Image1.Picture.Assign(jpegimg);

       Stream.Free;
     except
       on e:Exception do
       Stream.Free;
     end;
    end;
  • Вайрекс (28.12.17 22:26) [6]
    И чего? Вы привели дубликат кода из [1], и нафига?

    VCL ориентируется по расширению файла. Если расширение jpg - используется TJPEGImage, если gif - соответственно TGIFImage, и.т.д. У ваших файлов известны расширения?
    Если нет - либо искать классы умеющие опознавать формат по содержанию TMemoryStream, либо пытаться грузить по очереди во все имеющиеся потомки TGraphic...
 
Конференция "Media" » Help! Загрузка картинок из интернет в TImage
Есть новые Нет новых   [134427   +26][b:0][p:0]