Voir une image avec une séparation quadrichromique

Signaler
Messages postés
197
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
19 avril 2020
-
Messages postés
197
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
19 avril 2020
-
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/102658-voir-une-image-avec-une-separation-quadrichromique

Messages postés
197
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
19 avril 2020
1
voir une image permet d'ouvrir de visualiser une image selon quatre formats prédéfinis (jpeg, bmp, gif, png), il permet aussi d'imprimer l'image visualisée et de la mettre en rotation autour de son centre. D'appliquer des effets et des filtres vidéo, d'extraire ces composantes primaires, soit le cyan, le magenta ou le jaune, de la passer en gris souris, selon l'intensité lumineuse de chaque pixel et d'utiliser la molette de la souris pour l'agrandir proportionnellement ou de l'orienter dans un sens ou dans l'autre.
Messages postés
197
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
19 avril 2020
1
J'ai alors, aujourd'hui ajouté un menu option comportant trois options supplémentaires qui sont les suivantes : afficher une grille de repèrage, ainsi que le réticule, et afin afficher ou pas le rectangle d'encadrement de cette image (en rouge). Ce même menu options permet aussi de compter le nombre de couleur(s) unique de l'image pixelisée affichée.
Messages postés
197
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
19 avril 2020
1
Je vais bien sûr essayer de voir comment améliorer ceci, mais je tiens à vous signaler que dans cette version, j'ai surtout amélioré la procedure qui effectue une rotation, comme vous pouvez le voir dans l'unité u_comme_paint. Le rectangle rouge se positionne en fonction de l'angle d'orientation. De cette façon, l'image mise en rotation n'est pas tronquée, sa taille s'ajuste dynamiquement. Pour obtenir une rotation de cette image il faut appuyer sur les touches ':' ou '!' comme je l'ai expliqué dans la notice de présentation.
Messages postés
3810
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
28 mai 2020
29
tu as du te tromper de Zip
parce qu'il n'y a rien de corrigé dans cette version !!!

j'en veux pour preuve le résultat du teste:
---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:

21 - 28 bytes: Tmain_window x 1, T_Col_Named x 1, TObjectList x 6
29 - 36 bytes: Tstate_window x 1, twpanel_chrome_slider x 1
37 - 44 bytes: twpanel_chrominance x 1
61 - 68 bytes: TBitmap x 66
85 - 92 bytes: Unknown x 1
117 - 124 bytes: TBitmapImage x 66
141 - 148 bytes: TTool_window x 1
221 - 236 bytes: T_color_name x 413
1981 - 2172 bytes: Unknown x 1
---------------------------
OK
---------------------------
rien que là tu as plus 500 objets non libérés
la suite à la prochaine mise à jour avec la bonne version ;)
Messages postés
197
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
19 avril 2020
1
Je viens a nouveau de poster une mise a jours du mini-logiciel voir une image sans les fuites de mémoires que vous avez détecter dans les effets et la rotation d'image.
Trop de problème dans le code
pour chaque effet plusieurs chargement du meme image
cirec araison tros de fuites
domage
Messages postés
3810
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
28 mai 2020
29
je me suis fatigué à trouver et corriger un bon nombre de fuites de mémoires et là je constate que tu as fait une mise à jour sans tenir compte de mes corrections. Elles ont totalement disparue du Zip !!!

Quel est le message que tu souhaites faire passer ?
Les fuites de mémoires sont nombreuses et pour t'en rendre compte il te suffit d'ajouter ceci au début de ton DPR
begin
{$IF CompilerVersion >= 17.00}
  ReportMemoryLeaksOnShutDown := True;
{$IFEND}
  Application.Initialize;
  ...

ensuite tu manipules une image
tu lui appliques rotations et filtres plusieurs fois et tu fermes ton application.
Tu verras une MessageBox avec le détail des fuites.

Tout ceci est perdu à chaque fois et plus tu appliques de filtres et rotations plus les fuites augmentes.

Même sans manipulation d'image tu obtiens déjà des fuites le simple fait de démarrer et refermer l'application occasionne déjà une série de fuites.

Conclusion:
Si déjà tu souhaites gérer les fenêtres et messages toi même fait le correctement jusqu'au bout en pensant que tout ce que tu crées doit être libéré soit après utilisation ou avant de quitter l'application.
Mais on peut pas laisser la mémoire d'un ordinateur dans cet état !!!


Cordialement,
@+
Messages postés
3810
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
28 mai 2020
29
Messages postés
197
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
19 avril 2020
1
Merci pour le compliment mais ou est exactement la "charte" d'utilisation?
Messages postés
3810
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
28 mai 2020
29
Bonjour,

en premier je te dis merci d'avoir fait l'effort de poster un code complet et utilisable par la communauté.

J'ai donc, de mon coté, aussi fait l'effort de regarder ton code de plus près et je me suis cantonné à la "traque" et au "colmatage" des fuites de mémoire.

Comme les explications seraient trop longue pour les détailler ici j'ai mis à jour le zip et le tout se trouve dans un répertoire à part. Tu y trouveras aussi un fichier txt avec les modifications apportées mais comme tu as mis à jour ton code entre le début de mes investigations et aujourd'hui les dernières modifications n'y sont pas répertoriées.

Mais elles sont toutes "taguées" dans le code par un :
      // ******** Cirec Modif 24/03/2018 ********************


L'image a également été mise à jour
cette emplacement doit servir à illustrer le dépôt et rien d'autre.

et pour finir, comme les 4 derniers dépôts ne sont qu'une succession de mise à jour du même programme j'ai supprimé les 3 premiers.

Maintenant que la mise à jour du code est à nouveau opérationnel il serait bien d'en tenir compte.

Merci encore pour ce partage.

Cordialement,
@+