EVITER LA FENÊTRE ERREUR JPEG #41 SI CHARGEMENT D'IMAGE JPG INVALIDE

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 - 11 févr. 2005 à 23:14
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 - 24 août 2006 à 22:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29433-eviter-la-fenetre-erreur-jpeg-41-si-chargement-d-image-jpg-invalide

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
24 août 2006 à 22:25
En attendant la mise à jour, voilà un code plus orthodoxe :

function LoadImageJpeg(const FromFile: string; ToImage: TImage): Boolean;
var
Bmp: TBitmap;
Jpg: TJpegImage;
begin
Result := True;
Jpg := TJpegImage.Create;
try
try
Jpg.LoadFromFile(FromFile);
Bmp := TBitmap.Create;
try
Bmp.Assign(Jpg);
ToImage.Picture.Assign(Bmp);
finally
Bmp.Free;
end;
finally
Jpg.Free;
end;
except
Result := False;
end;
end;

On peut remarquer qu'en cas d'exception, je ne libère plus les ressources avant de les avoir créées, lol.

A plus...
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
24 août 2006 à 22:21
Moin = moi (pourtant je ne parle pas du tout le créole, mdr)
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
24 août 2006 à 22:19
Salut Cirec,

Tu as l'intention d'éplucher tous mes vieux codes ? Moin il y a longtemps que je n'ose plus les regarder...
Pourtant, je l'aimais bien, celui-là.
Mais en le regardant mieux, je note que j'avais mal disposé les instructions à l'intérieur des blocs try ..except et try..finally.
Il apparaît également que ton astuce est plus efficace, car non seulement on économise du code, du temps et de la ressource, mais en plus on cerne précisément l'erreur déclenchée.
Voici quand même la correction de mon code (devenu inutile), en attendant la mise à jour.
Bon, Grandvizir n'avait pas tort, mais il a toujours eu le chic pour m'agacer...
Utilisateur anonyme
24 août 2006 à 15:31
Salut,

encore moi ... :-)

Voici un petit truc qui permet de caputer les exceptions JPEG #41, #52, #53 voir plus

je l'ai adapté à ton code et du coup on ne se sert plus de LoadImageJpeg

procedure TForm1.rgChoixClick(Sender: TObject);
var AnImage: String;
begin
case rgChoix.ItemIndex of
0: AnImage := 'Valid.jpg';
1: AnImage := 'NoImage.jpg';
2: AnImage := 'Invalid.jpg';
end;
AnImage := PathAppli + AnImage;
sbInfo.SimpleText := AnImage;
Try
Image1.Picture.LoadFromFile(AnImage);
// il suffit de faire un refresh avant ce qui permet la capture des exceptions en question
Image1.Refresh;
Except
ON E: Exception DO
begin
if cbMessage.Checked then
ShowMessage(E.Message); // la preuve ici ;-)
if cbClearImage.Checked then
Image1.Picture := nil;
End;
End;
end;


GrandVizir n'était pas loin il était sur la bonne piste.

Bien sur à tester en dehors de l'EDI

@+
Cirec
cs_FreDelph Messages postés 31 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 13 novembre 2006
14 févr. 2005 à 15:11
J'ai moi aussi été confronté à des erreurs de jpg invalide mais #52 et j'ai utilisé le code suivant qui me débarrasse du jpg invalide :

try
Image.Picture.LoadFromFile(*.jpg);
except
on EInvalidGraphic do
DeleteFile(*.jpg);
end;
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
13 févr. 2005 à 17:55
Bah, tu ne devrais pas le prendre comme ça, grandvizir...

L'ambiance sur le site est vraiment excellente depuis quelques temps, vraiment.

Beaucoup d'intervenants sont de qualité, par leur science ou/et par leurs qualités humaines.
Tu en fais partie à mon humble avis.

Mais c'est vrai que tu es souvent tranchant et péremptoire dans tes interventions.
Tu as trouvé la méthode efficace pour me faire "monter dans les tours", c'est clair.

Allez, fais pas la gueule, s'il n'y avait pas grandvizir sur ce site, qu'est ce qu'on s'emmerderait ;)

Amitiés Delphistes, mec ;)
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
13 févr. 2005 à 17:05
J'avoue ne pas comprendre votre ambiance. Bref! Je préfère ne rien dire... de toute façon, y'a pas grand chose à dire à part que c'était juste un pb d'affichage.
Debiars Messages postés 285 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 11 février 2018
13 févr. 2005 à 09:46
Salut japee
Pour iznogoud, j'ai trouvé un adjectif : pédant...

Excuse-moi pour le !o! utilisé plus haut, je n'avais pas eu le temps de l'épiler.

|o| là, ç'est bien mieux.
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
13 févr. 2005 à 03:02
grandvizir>
"Les erreurs Jpeg sont parfois de la crotte"
ok man, tu veux encore casser un code posté par japee, pas de problème, défoule toi, ça te fera du bien à défaut de te dégorger le poireau ;)
Sinon, réfléchis au problème et à sa solution, ça te calmera...

Accessoirement, on a toujours un peu de mal à comprendre ce que tu veux dire, question de terminologie... ou de patois régional ?
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
12 févr. 2005 à 18:48
Je suis bien sceptique. Faisons simplement:

try
MonTImage.Picture.LoadFromFile('Fichier.jpg');
except
MonTImage.Refresh;
end;

Les erreurs Jpeg sont parfois de la crotte (un peu comme les EDBEngineError où ça ne tient souvent qu'à un détail). Ca bugge et surtout fait planter tout l'enchaînement des procédures, et fait manquer l'affichage au passage. D'ailleurs, si j'ai bien compris, si jappe passe par un bmp puis affiche, on voit très bien que je prend un raccourci encore plus court. Question d'actualisation... Oh ??

Faudra donc tester la méthode. Je ne sais plus où j'ai entendu parler de l'erreur 41, mais il me semble que cela n'affecte que l'affichage, ou le header même ???

Sinon, pourquoi dis-tu «pervers» ?
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
12 févr. 2005 à 16:21
Salut, Debiars ! \o/

Content que ça puisse te servir, c'est fait pour ça.
A ranger dans la catégorie petites astuces qui dépannent bien, quoi...

Je constate avec plaisir que je ne suis pas le seul "pervers" à apprécier la plastique de notre Lio internationale. ;)
Debiars Messages postés 285 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 11 février 2018
12 févr. 2005 à 16:03
Merci japee, ça va me servir, car il n'y a pas longtemps...
En ce qui concerne l'image, tu aurais eu tort de réduire la qualité, nom de d'là, !o!
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
12 févr. 2005 à 13:44
Pas de quoi, GordoCabron.

Ca m'étonnerait que tu puisses abuser, ma science de Delphi a hélas pas mal de limites ;-)

Je viens de faire une mise à jour. Le code précédent fonctionnait mais était inutilement compliqué.
GordoCabron Messages postés 29 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 14 mars 2007
12 févr. 2005 à 05:12
Merci ca c'est une reponse dans les regles de l'art. Fait attention, si tu reponds aussi bien a mes prochains problemes je pourrais finir par abuser !!
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
12 févr. 2005 à 00:00
Voilà, c'est corrigé.

Le code est devenu "un poil" plus complexe.

J'avais manqué de rigueur dans la mise au point de ma fonction, ça peut arriver, c'est une explication, mais c'est pas une excuse... :(
Donc, là, ça baigne.

Encore mes excuses aux 40 premiers qui ont déjà téléchargé !
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
11 févr. 2005 à 23:14
Désolé, j'ai l'impression qu'il y a un problème au niveau des image au format invalide, je revoie ma copie, et je mets à jour.
Je suis allé un peu vite...
Rejoignez-nous