![]() |
Bild in TImage --> jpeg-Fehler #52
Moin Moin,
ich lade anhand einer Liste Artikelbilder aus dem Internet, das funktioniert auch soweit auch die URL stimmt und das Bild vorhanden ist. ist dies nicht der fal dann bekomme ich jpeg-Fehler #52 als Error
Delphi-Quellcode:
anhand von bildart wird unterschieden welches timage ich nutze also jpg oder gif, das schalte ich dann sichtbar aber das ist ja nicht das problem
// JPG
if bildart = 'jpg' then begin try Form2.Image1.Visible := true; form2.image1.Picture.Graphic.LoadFromStream(aStream); except // showmessage('fehler'); // jpeg-Fehler #52 on E: Exception do showmessage('Fehler'); end; end; habe mir also gedacht machste ne exeption rein, ok das programm stürzt nicht mehr ab, allerdings kommt weiterhin noch die fehlermeldung mit jpeg-Fehler #52 und nicht nur Fehler und genau das möchte ich vermeiden, also diesen standardfehler unterdrücken |
Re: Bild in TImage --> jpeg-Fehler #52
1, Vermutlich kommt hier keine Exception hoch sondern ein Message-Dialog in der Implementierung. Und den wirst du nicht unterdrücken können (außer duch Thread der diesen Dialog mit OK bestätigt)
2, Wieso überprüfst du denn nicht ob die JPEG-Datei überhaupt existiert und dann die gefährtete Aktion nicht durchführst. |
Re: Bild in TImage --> jpeg-Fehler #52
wie willste das denn überprüfen ?
die datei liegt im internet und da kommt immer was zurück, sei es nur ein 404 in dem fall wird wohl mittels htaccess ein mod_rewrite auf ein anderes bild geleitet siehe selber ![]() |
Re: Bild in TImage --> jpeg-Fehler #52
#52 ist leider ein Standardfehler mit einigen Bildern und der Komponente. Meines Wissens nach gibt es da keine vernünftige Lösung und tritt unabhängig von Internet/Lokal auf :?
...:cat:... |
DP-Maintenance
Dieses Thema wurde von "sakura" von "Object-Pascal / Delphi-Language" nach "Multimedia" verschoben.
|
Re: Bild in TImage --> jpeg-Fehler #52
hi nisbo,
bits du dir denn sicher, dass du einfach die bilder von der seite laden darfst? wenn das erlaubt ist, gibt es meist eigene APIs, die dann auch funktionen zum überprüfen bereitstellen. wenn nicht, dann ist die verwendung der bilder meistens auch nciht gestattet. wenn du doch die erlaubnis hast, es aber keine API gibt, dann würde ich empfehlen, aus dem erhaltenen bild eine prüfsumme zu errechnen (MD5 tut's gut) und anhand dieser zu prüfen, ob es das "nicht verfügbar"-bild ist. aeno |
Re: Bild in TImage --> jpeg-Fehler #52
dabei handelt es sich um affili.net welche auch die csv-daten bereitstellen in denen dann die links zu den artikelbildern sind, affili-net ist ja ein sammelanbieter und somit wird es wohl mit functionen zum überprüfen schwer werden
naja md5 checksumme wird mir da vermutlich auch nicht weiterhelfen, zumindest wüßte ich nicht wie denn diese checksumme muß ja schon irgendwie vorhanden sein, wird aber bei affilinet nicht angeboten |
Re: Bild in TImage --> jpeg-Fehler #52
Naja, du kannst sie einfach selber machen...
![]() |
Re: Bild in TImage --> jpeg-Fehler #52
Hast Du das spezielle Bild, welches Dir Probleme macht, mal runtergeladen und einfach in der IDE versucht dieses in ein Image zu laden. Geht das?
...:cat:... |
Re: Bild in TImage --> jpeg-Fehler #52
@ DGL-luke
Zitat:
@ sakura ![]() das problem ist das dies eine weiterleitung ist, klicke einfach mal drauf dann wirst du es in der browserzeile sehen |
Re: Bild in TImage --> jpeg-Fehler #52
ähm ja das mit der suche hab ich auch grad gemerkt....
Du kannst doch mit den Komponenten, mit denen du das Bild lädst (Indy?), sicher die Umleitung abfangen? und wenn die Umleitung auf default.jpg erfolgt, dann lass es halt sein ^^ Un die Checksumme kannst du dopch auch pber deault.jpg machen, oder meinst du, das ändert sich so schnell? |
Re: Bild in TImage --> jpeg-Fehler #52
das können ja verschiedene bilder sein, shop a hat default.jpg shop b dann keinbild.jpg usw
das ganze ist ja dynamisch deswegen bräuchte ich da was universelles ach ja ich nutze indy |
Re: Bild in TImage --> jpeg-Fehler #52
Ok. in Indy sollte es doch ein OnRedirect geben, oder?
|
Re: Bild in TImage --> jpeg-Fehler #52
stimmt dieser punkt geht an dich :)
stellt sich jetzt nur die frage wie ich das mitten im programm abfragen kann ? also das muß dann ja da irgendwie rein oder ?
Delphi-Quellcode:
// JPG
if bildart = 'jpg' then begin try Form2.Image1.Visible := true; form2.image1.Picture.Graphic.LoadFromStream(aStream); except // showmessage('fehler'); // jpeg-Fehler #52 on E: Exception do showmessage('Fehler'); end; end; |
Re: Bild in TImage --> jpeg-Fehler #52
Nein.
Ich weiss nicht, welche Version der Indys hast, und wie dein restlcihe Implementation aussieht, aber du hast folgende Möglcihketien: - Im OnReconnect den Reconnect abbrechen. Keine Ahnung, was dein IdHTTP1.Get dann zurückliefert. - Im OnReconnect ein Boolean setzen, nach dem Zurückkerhen des Get Boolean prüfen und falls true ergebnis verwerfen - Im OnReconnect dem Ding dein eigenes Fehlerbild unterjubeln, ka ob/wie das geht. |
Re: Bild in TImage --> jpeg-Fehler #52
mmm asche auf mein haupt, war ne kleine fehlinfo dabei, in dem teil arbeite ich gar nicht mit den indys sondern habe da ne funktion gefunden welche ich an meine bedürfnisse angepasst habe, die ganze funktion schaut so aus eventuell hilft das weiter
Delphi-Quellcode:
function DownloadURL(const aUrl: string; bildart: string): Boolean;
var hSession: HINTERNET; hService: HINTERNET; lpBuffer: array[0..1024 + 1] of Char; dwBytesRead: DWORD; aStream : TFileStream; begin Result := False; hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); try if Assigned(hSession) then begin hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, 0, 0); if Assigned(hService) then try aStream := TFileStream.Create('temp_bild'+ ExtractFileExt(aURL), fmCreate); while True do begin dwBytesRead := 1024; InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead); if dwBytesRead = 0 then break; lpBuffer[dwBytesRead] := #0; aStream.WriteBuffer(lpBuffer, dwBytesRead); end; aStream.Position := 0; // JPG if bildart = 'jpg' then begin try Form2.Image1.Visible := true; form2.image1.Picture.Graphic.LoadFromStream(aStream); except // showmessage('fehler'); // jpeg-Fehler #52 on E: Exception do showmessage('Fehler beim Laden des Artikelbildes'); end; end; // Gif if bildart = 'gif' then begin Form2.Image2.Visible := true; form2.image2.Picture.Graphic.LoadFromStream(aStream); end; Result := True; finally FreeAndNil(aStream); InternetCloseHandle(hService); end; end; finally InternetCloseHandle(hSession); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz