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


والسلام عليكم ورحمة الله
الرد
#2
راجع هذا المثال سيفيدك
كود :
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.
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة
  • mohamed49
الرد
#3
تمام تم حل المشكلة الاولى لكن بقي الامتداد اذا لم يكن 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;
الرد
#4
يمكنك التحقق بطريقتين
الأولى التحقق من الملف
الثانية الاستعانة برد الخادم
وهي كالتالي:
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; 
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 1 user says قال شكرا ل Agmcz على المشاركة المفيدة
  • mohamed49
الرد
#5
بارك الله فيك اخي وصلت الفكرة جزاك الله كل خير

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

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


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم