-
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. Не хочет. Может есть какой-нибудь код для загрузки любых форматов? -
> Не хочет
А ты его вежливо попроси. Или убеди как-нибудь. Может, захочет? -
syserg (25.07.09 20:10) [2]На коленях стоял, умолял... Ни в какую...
-
значит, он не не хочет, а не может.
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...