delphi4arab منتديات دلفي للعرب
خطا عند اظهار صورة idhttp - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : خطا عند اظهار صورة idhttp (/showthread.php?tid=8629)



خطا عند اظهار صورة idhttp - mohamed49 - 17-04-2017

السلام عليكم
عندي خطا عند اظهار صورة من رابط في 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;


والسلام عليكم ورحمة الله


RE: خطا عند اظهار صورة idhttp - Delphi4Us - 17-04-2017

راجع هذا المثال سيفيدك
كود :
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.



RE: خطا عند اظهار صورة idhttp - mohamed49 - 17-04-2017

تمام تم حل المشكلة الاولى لكن بقي الامتداد اذا لم يكن 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;


RE: خطا عند اظهار صورة idhttp - Agmcz - 18-04-2017

يمكنك التحقق بطريقتين
الأولى التحقق من الملف
الثانية الاستعانة برد الخادم
وهي كالتالي:
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; 



RE: خطا عند اظهار صورة idhttp - mohamed49 - 19-04-2017

بارك الله فيك اخي وصلت الفكرة جزاك الله كل خير

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

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