delphi4arab منتديات دلفي للعرب

نسخة كاملة : خطا عند اظهار صورة idhttp
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
عندي خطا عند اظهار صورة من رابط في image1 اذا كان الرابط بدايته https يحدث الخطا   الخطا
IOHandler value is not valid
الكود
كود :
var  strstream:string; stream:TMemoryStream; jp:TJPEGImage; http:TIdHTTP; begin  jp:=TJPEGImage.Create;  http:=IdHTTP1.Create(nil);   strstream:=IdHTTP1.Get('https://d.top4top.net/p_455jyqt61.jpg');  stream:=TMemoryStream.Create; stream.Write(strstream[1],Length(strstream) ); stream.Position:=0; jp.LoadFromStream(stream); Image1.Picture.Assign(jp);   stream.Free;   jp.Free; end;


والسلام عليكم ورحمة الله
راجع هذا المثال سيفيدك
كود :
uses  IdHTTP,  IdSSLOpenSSL,  SysUtils; Var  IdHTTP1 : TIdHTTP;  Src : string;  LHandler: TIdSSLIOHandlerSocketOpenSSL; begin  try   IdHTTP1:=TIdHTTP.Create(nil);   try    LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);    try      IdHTTP1.IOHandler:=LHandler;      Src:= IdHTTP1.Get('https://tools.usps.com/go/ZipLookupResultsAction!input.action?resultMode=0&companyName=&address1=1600+PENNSYLVANIA+AVE+NW&address2=&city=&state=Select&urbanCode=&postalCode=&zip=20500');      Writeln(Src);    finally      LHandler.Free;    end;   finally     IdHTTP1.Free;   end;  except on E: Exception do      Writeln(E.ClassName, ': ', E.Message);  end;  Readln; end.
تمام تم حل المشكلة الاولى لكن بقي الامتداد اذا لم يكن jpeg يظهر خطا كيف يمكنني اظهار جميع الامتدادات او اغلبها على الاقل

var strstreamConfusedtring;
stream:TMemoryStream;
jp:TJPEGImage;
http:TIdHTTP;
LHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
jp:=TJPEGImage.Create;
LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);

IdHTTP1.IOHandler:=LHandler;
http:=IdHTTP1.Create(nil);
strstream:=IdHTTP1.Get('https://d.top4top.net/p_455jyqt61.jpg');

stream:=TMemoryStream.Create;
stream.Write(strstream[1],Length(strstream) );
stream.Position:=0;
jp.LoadFromStream(stream);

Image1.Picture.Assign(jp);
stream.Free;
jp.Free;
LHandler.Free;
end;
يمكنك التحقق بطريقتين
الأولى التحقق من الملف
الثانية الاستعانة برد الخادم
وهي كالتالي:
PHP كود :
uses
  IdHTTP
, IdSSLOpenSSL, jpeg, pngimage;

procedure TForm1.Button1Click(Sender: TObject);
var
 
 HTTP: TIdHTTP;
 
 IdSSLIOHandlerSocket: TIdSSLIOHandlerSocketOpenSSL;
 
 Stream: TMemoryStream;
 
 Jpg: TJPEGImage;
 
 Png: TPngImage;
begin
  HTTP 
:= TIdHTTP.Create(nil);
 
 IdSSLIOHandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
 
 Stream := TMemoryStream.Create;
 
 Jpg := TJPEGImage.Create;
 
 Png := TPngImage.Create;
 
 try
    HTTP
.IOHandler := IdSSLIOHandlerSocket;
 
   try
      HTTP
.Get('https://d.top4top.net/p_455jyqt61.jpg', Stream);
 
     Stream.Position := 0;
 
     if HTTP.Response.ContentType = 'image/jpeg' then
      begin
        Jpg
.LoadFromStream(Stream);
 
       Image1.Picture.Assign(Jpg);
 
     end;
 
     if HTTP.Response.ContentType = 'image/png' then
      begin
        Png
.LoadFromStream(Stream);
 
       Image1.Picture.Assign(Png);
 
     end;
 
   except
      
// Error
 
   end;
 
 finally
    Jpg
.Free;
 
   Png.Free;
 
   Stream.Free;
 
   HTTP.Free;
 
 end;
end; 
بارك الله فيك اخي وصلت الفكرة جزاك الله كل خير

تبقى مشكلة ضبابية الصورة لا تظهر بالشكل المطلوب ما السبب؟

تمام جربت على صور اخرى وتظهر جيدا المشكلة في نوعية الصورة على ما اعتقد جزاك الله كل خير