Voir une image avec une séparation quadrichromique

denisbertin Messages postés 245 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 13 mai 2023 - 23 mars 2018 à 12:49
denisbertin Messages postés 245 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 13 mai 2023 - 1 mai 2018 à 20:32
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

denisbertin Messages postés 245 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 13 mai 2023 1
1 mai 2018 à 20:32
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.
denisbertin Messages postés 245 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 13 mai 2023 1
4 avril 2018 à 23:50
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.
denisbertin Messages postés 245 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 13 mai 2023 1
4 avril 2018 à 00:00
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.
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
3 avril 2018 à 01:30
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 ;)
denisbertin Messages postés 245 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 13 mai 2023 1
2 avril 2018 à 21:58
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
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
31 mars 2018 à 16:13
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,
@+
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
25 mars 2018 à 00:54
denisbertin Messages postés 245 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 13 mai 2023 1
24 mars 2018 à 22:52
Merci pour le compliment mais ou est exactement la "charte" d'utilisation?
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
24 mars 2018 à 22:04
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,
@+
Rejoignez-nous