Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

VIDEOCREATOR : ANIMATION D'IMAGES


Information sur la source

Catégorie :Graphique Classé sous : visionneuse, paint, fusion, luminosité, treeview Niveau : Initié Date de création : 24/08/2006 Date de mise à jour : 20/09/2006 23:37:17 Vu / téléchargé: 7 261 / 1 508

Note :
Aucune note

Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Comme f0xi me l'a demandé ;), je vous reposte ce source.

Ce source vous permet de créer des animations à partir d'images en leur incorporant du texte et du son. Un petit player vous permet de lire le "film" résultant.

D'un point de vue du code, vous trouverez :
-Comment insérer du texte dans un TImage
-Capturer du son à partir d'un microphone
-Un petit Paint
-La gestion d'un treeview
-Fusionner et défusionner des images : technique utilisable pour modifier un executable.
-Modifier la luminosité de votre écran

Les images ont été modifiées et l'ergonomie repensée.
Le changement de luminosité a été mis en option suivant le conseil de Florenth.
Quelques beugs ont été éliminés.
Les effets d'animation des forms ont été supprimés (vous pouvez voir les sources de Forman et Cirec pour le principe).
La partie utilisant le composant IdHTTP a été supprimé induisant une option en moins.


Intérets de cet source :
-Créer un film de vacances visionnable entre amis.
-Faire des animations pour les enfants pour leur apprendre à lire et à reconnaitre des objets.
-Réaliser des animations à partir de planches de dessins.


PS :
*Il ne s'agit pas d'un CODEC.
*Merci de laisser des remarques constructives et objectives.

------------------------------------------------------------------------------

Suite à la demande de Jerome, l'idée m'est venue de réaliser un codec en convertissant systematiquement tous les Wav en Mp3 et en compressant les Jpeg.
Une seconde version, VideoCreator-Codec, est ainsi présente.

Vous avez besoin de deux dll :
*Lame : téléchargeable gratuitement (http://www.torry.net/vcl/mmedia/other/tlame.zip).
*Bass : Fournit dans le zip (Raison : évolution future afin de retoucher le son et réaliser un équalizeur).
 

Conclusion

Remerciements :
*f0xi : Pour ses conseils et les images du Video Creator.
*Delphiprog : Pour sa correction pour l'ergonomie et le design.
*Cirec : Les Bmp sont maintenant convertis en JPeg.
*Florenth : Pour m'avoir aidé à débeuguer ce programme.

---------------------------------------------------

A la demande de Monsieur Debiars, voici un petit tutorial.


I-Prévisualiser une image

Pour cela il suffit de cliquer sur la loupe.
Sélectionner votre image puis valider par ouvrir.
L'image apparaît avec son nom et son répertoire.


II-Ajouter une (des) image(s)

Cliquer sur l'icône dossier.
Sélectionner le ou les fichiers images désirés.
La liste apparaît dans le treeview.


III-Déplacer une image

Faites un drap&drop dans le treeview pour déplacer une image dans la liste.


IV-Supprimer une sélection

Choisir un Cnode et cliquer sur l'icône Dossier barré.


V-Insérer un texte

Sélectionner une image dans le treeview en cliquant sur son nom.
Cliquer sur l'icône Bloque-Note.
Sélectionner la taille, la couleur et le style de la police.
Rentrer le texte dans l'Edit de la nouvelle fenêtre puis valider par l'icône Bloque-Note.

VI-Insérer un son

Sélectionner une image dans le treeview en cliquant sur son nom.
Cliquer sur l'icône Micro.
Dans la nouvelle fenêtre faites de même en gardant le clique droit enfoncé.
Quand votre capture est finit relâcher.

Pour ajouter un son déjà existant sélectionner une image dans le treeview.
Cliquer sur l'icône dossier.
Sélectionner un fichier son et valider.

VII-Retoucher une image

Sélectionner une image dans le treeview en cliquant sur son nom.
Cliquer sur l'icône palette .
Faites votre modification comme avec Paint.
Valider par l'icône disquette.

VIII-Création du film

Cliquer sur le treeview.
Cliquer sur la caméra.
Choisir un fichier avec l'extension ".fvc"
Valider par enregistrer.

IX-Voir un film

Cliquer sur l'icône video-projecteur.
Cliquer sur l'icône dossier puis sélectionner un film.
Regarder le film (Même fonctionnement qu'un magnétoscope).
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   VideoCreator2
    • VideoCreator2.zipTélécharger ce fichier [Réservé aux membres club]331 903 octets
    • VideoCreator2-Codec.zipTélécharger ce fichier [Réservé aux membres club]444 784 octets

Télécharger le zip

Historique

24 août 2006 23:47:50 :
Suppression d'un mot en trop
25 août 2006 23:37:06 :
Merci à Florenth pour ses conseils : *Modification des filtres *Proportion des images *Insertion d'un savedialog *Suppression de la création de la clée dans la base de registre *Modification de la position initiale du trackbar Modifications personnelles : *Petite retouche sur l'image principale *Déclaration des Hints pour la luminosité de l'écran ainsi que le trackbar *Couleurs de certains Edit *Ajout du double buffer : au cas ou pour faire plaisir à Cirec *Modification au niveau des savedialog : si l'extension n'est pas précisée par l'utilisteur *Scintillement du Treeview : l'erreur semble propre à ce composant. Mmmmmm : à étudier *Pour la longueur des TreeNodes : mmmm j'avais pensé à cela ;).En attente de réflexion *Pour les images des TreeNodes : A venir
29 août 2006 00:13:27 :
*Maintenant en cliquant sur les TreeNodes, leurs icones ne changent plus. *Les images modifiées sont enregistrées dans le dossier temporaire. *La proportion des images n'est plus modifiée. *Le nom long des fichiers en nom court dans le treeview n'a pas été réalisé. Modification trop importante du code, sans oublier l'intéret de pouvoir distinguer deux images appartenant à des répertoires différents, ayant le meme nom court . *Seconde version
09 septembre 2006 12:54:17 :
Dans le source VideoCreator-Codec, les images sont toutes convertis en Jpg avec un taux de compression de 20 % et redimensionnées si la taille est supérieure à 1800x1600 (Idées de Florenth). Il en découle ainsi un véritable Codec.
20 septembre 2006 23:37:17 :
Un petit tuto pour ceux qui trouverait un peu difficule l'utilisation de ce soft. Il s'agit d'une brève explication mais devrait vous permettre de aiguiller sur son utilisation au cas ou ^^. En esperant que cela convienne à Monsieur Debiars sinon screenshots ^^.

Commentaires et avis

signaler à un administrateur
Commentaire de Francky23012301 le 25/08/2006 15:53:46

Merci Florenth,

Pour le Filter et le trackbar je vais changer cela.

Pour le texte c'est surprenant je viens de télécharger la source et j'ai bien un changement de couleur avec un bmp ou un jpeg avec la souris ou le clavier (OnClick et OnChange du TreeView). PS : si on ne sélectionne pas de couleur dans le ColorGrid par défaut la couleur est noire.Peux-tu me dire ce qu'il y a marqué en paramètre pour "couleur" dans le treeview.

Changement d'icone dans le treeview: je viens de le voir, je penses savoir ce que c'est ^^.

Pour la sauvegarde pourquoi utiliser un TOpenDialog et pas un TSaveDialog?Bien j'avais pas envie d'allourdir l'exe par un composant inutile (le TSaveOpenDialog n'était pas spécialement utilie).

L'extension fvc : il y a deja eu ce probleme de soulever avec D6 il me semble. Peux tu me dire ta congif windows et la version de Delphi que tu as utilisé?

Windows XP Professionnel , Delphi7. Peux tu regarder via regedit si la clée est crée dans la base de registre ?

L'affichage du son et du texte dans le player : chez moi ca fonctionne. Bizarre ?

Si d'autres personnes peuvent tester pour savoir si cela fonctionne chez eux ?

signaler à un administrateur
Commentaire de Francky23012301 le 25/08/2006 16:35:13

Merci FLorenth,

Je fais les modifs rapidement et je poste le tout ;).

signaler à un administrateur
Commentaire de DRJEROME le 26/08/2006 14:28:09

Lut ;)

On voit d'entrée qu'il y a eu du boulot

bientôt l'avi ?

félicitations ;)

signaler à un administrateur
Commentaire de Francky23012301 le 26/08/2006 20:20:37

Salut

@DrJerome : Merci pour tes commentaires ;)
A quand l'avi ? ben si je devais le faire je ferais plutot un format compressé en créant un propre composant maiss là c'est un boulot énrome qui doit surement tres difficile.

@A Florenth ; j'ai fais quelques changements pour les autres je dois reflechir encore un peu sur la méthode à utiliser ^^.
Modification de l'image : lol, je vous l'avais caché. C'est embettant oui je suis d'accord avec toi alors pourquoi ? Pour ne pas rendre l'application trop difficile à prendre un main. Mais je dois reflechir (decidemment) pour trouver une solution convenable.  


Merci à vous deux

signaler à un administrateur
Commentaire de Francky23012301 le 29/08/2006 00:18:52

Une petite précision : pour compiler le source, les deux dll doivent se trouver dans le meme repertoire que le projet

signaler à un administrateur
Commentaire de f0xi le 30/08/2006 03:46:51 administrateur CS

petite amelioration des fonctions de convertions d'images :


il faut donner un nom explicite pour savoir de quoi il s'agit réellement, BMPConversion ne veut rien dire...

Procedure BMPToJPEG(const SourceFile,DestFile : string; const CQu : TJPEGQualityRange = 100);
var
  AJPEG : TJPEGImage;
  ABitmap : TBitmap;
begin
  // verifier l'existance de la source peu eviter des problemes
  if not FileExists(SourceFile) then exit;

  AJPEG   := TJPEGImage.Create;
  ABitmap := TBitmap.Create;
  try
    ABitmap.LoadFromFile(SourceFile);
    AJPEG.GrayScale := False;
    AJPEG.Assign(ABitmap);
    AJPEG.JPEGNeeded;
    AJPEG.CompressionQuality := CQu;
    AJPEG.Compress;
    AJPEG.SaveToFile(DestFile);
  finally
    AJPEG.Free;
    ABitMap.Free;
  end;
End;


dans addfile :

Function AddFile(ASourceFile,ADestFile : String) : cardinal;
Var
  SourceFS,DestFS : TFileStream;
Begin
  SourceFS := TFileStream.Create(ASourceFile, fmOpenRead);
  Result   := SourceFS.Size;
  
  // tout simplement >>
  DestFS := TFileStream.Create(ADestFile, fmOpenWrite or fmCreate);
  Try
    DestFS.Position := DestFS.Size;
    DestFS.CopyFrom(SourceFS, Result);
  Finally
    FreeAndNil(DestFS);
    FreeAndNil(SourceFS);
  End;
End;


dans addinfo, vus que ce sont des chaines, pourquoi ne pas utiliser un TStringList ?
cela te permettrais d'ecrire une routine moins complexe, surtout que les chaines sont relativement chiantes a manipuler dans les streams, de plus cela te permet de ne pas a avoir a utiliser de delimiteur en fin de chaine et egalement te pouvoir transmettre directement des données de composants possedant un TStrings :

procedure AddInfo(const Infos, FileName : Sting);
var
TL : TStringList;
begin
  TL := TStringList.Create;
  TL.LoadFromFile(FileName);
  TL.Insert(0,Infos);
  TL.SaveToFile(FileName);
  TL.Free;
end;


attention egalement au repetition de inttostr dans les chaine, c'est trés lents a partir de 2 appels :

Info := IntToStr(ImgSize)+'-'+IntToStr(SndSize)+'-'+IntToStr(IniSize)+'|';

Info := Format('%d-%d-%d|',[ImgSize,SndSize,IniSize]);

tu pourrais meme utiliser une structure record pour simplifier l'ecriture du fichier infos, voir meme pour generer un footer de fichier pour fusionner le pack fichier et le fichier d'infos.

TInfos = record
   ImgSize,
   SndSize,
   IniSize : cardinal;
end;

ont pourrais ecrire donc une telle structure de fichier :

[<SIGN>  signature - 4 octets - cardinal]
[<COUNT> nombres de fichiers - 4 octets - cardinal]
[<FILES> fichiers - n*octets - bytes buffer]
[<SGCTL> control signature pour le debuts des infos - 4 octets - cardinal]
[<INFOS> infos - FCOUNT*3*4 octets - TInfos structure]

et en gros on ferais comme cela :

ajout de fichier / infos :

ouverture du Flux en mode RW (fmOpenReadWrite or fmCreate)
Lecture/verification de SIGN
Lecture de COUNT
Deplacement a l'offset SIZE-(COUNT*SizeOf(TInfos));
Lecture de INFOS dans une Array of TInfos (d'ailleur je suggere la recuperation de l'offset de depart du fichier dans le stream dans la structure);
Ajout des infos des prochains fichiers dans la table d'infos
Incrementation de COUNT +1
Ecriture des fichiers dans le Flux
Ecriture de la tables des infos dans le Flux
Deplacement a offset 4
Ecriture de COUNT
Fermeture du flux

et derriere ça, utilisation de la ZLibEx pour compresser le tout :)

signaler à un administrateur
Commentaire de Francky23012301 le 30/08/2006 05:35:26

Arfff,

Scandaleux de ma part le format : oublie de ma part dans cette partie ^^.

Les images : Oui effectivement et quitte à faire mieux (merci Florenth) autant verifier la taille des images (1800*1600 suffit) et utiliser un taux de compression à 20%. Merci le gain de taille ^^ de quoi faire un Codec.

Pour le TStringList : sniaf sniaf je voulais faire autre chose mais j'avais pas d'idées. Je vais voir ca aussi car ca pourra me suffir si je fais un composant.

Pour les Record : j'aime pas ca lol

Merci f0xi : encore des améliorations à faire mais je trouve que ce source à quand meme de la gueule lol. Je tiens le bon bout

signaler à un administrateur
Commentaire de Francky23012301 le 30/08/2006 16:20:49

@foxi :

*Ta méthode addInfo ne fonctionne on perd 40% du fichier,  ce qui est normal tu utilises un TString. Ta fonction est correcte si tu as un fichier de petite taille mais dès que ca devient ce n'est plus bon.

*Dans la function addFile : le fait d'utiliser ceci
DestFS := TFileStream.Create(ADestFile, fmOpenWrite or fmCreate) provoque une erreur de stream lors de la lecture. Il en resulte que malgré les apparences

DestFS := TFileStream.Create(ADestFile, fmOpenWrite or fmCreate) n'est pas équivalent à If FileExists(ADestFile) then DestFS1:=TFileStream.Create(ADestFile,fmOpenWrite)
Else DestFS1:=TFileStream.Create(ADestFile,fmCreate);

signaler à un administrateur
Commentaire de Francky23012301 le 30/08/2006 17:45:50

Si si Florenth j'ai oublié des mots lol :

"Ta méthode addInfo ne fonctionne pas on perd 40% du fichier,  ce qui est normal tu utilises un TStringList. Ta fonction est correcte si tu as un fichier de petite taille mais dès que ca devient ce n'est plus bon.".

Bien moi aussi Florenth je pensais pour le fmCreate mais à priori les deux procedures ne sont pas totalement identiques : j'ai éssayé en changeant juste cela et ca a planté lamentablement lors de la lecture.

signaler à un administrateur
Commentaire de f0xi le 30/08/2006 22:20:38 administrateur CS

@franky : erf ... désolé, le fait de poster sans tester ... mais si il y a autant d'entrée je pense que les chaines ne sont pas adaptée d'un point de vue lecture ecriture.

il faudrait donc plus que tu te tourne vers une solution avec des structures :

record
  Offset : cardinal;
  Size   : cardinal;
end;


@florenth : mmm je vais jetter un oeuil a ton ExtStream, car je suis sur un packer en ce moment et ça pourrait etre interressant.

signaler à un administrateur
Commentaire de Debiars le 19/09/2006 14:08:58

Salut Franky,

Serait-y possible d'avoir un p'tit mode d'emploi, siouplait ?

signaler à un administrateur
Commentaire de Francky23012301 le 20/09/2006 13:59:28

Salut Mister,

Un expert comme toi : tu veux me faire avaler des salades lol ^^.

En fait j'avais réalisé une animation flash en guise de tuto : mais vu la taille du fichier j'ai été obligé de renoncer à le joindre avec le source : c'est balo.

Promis spécialement pour toi je rajoute un fichier texte en guise de mode d'emploi ce soir : Content ? ;).

@+

signaler à un administrateur
Commentaire de Debiars le 21/09/2006 11:41:18

Heureux, merci...

Mais pourquoi diable suis-je obligé de recharger le film pour le voir une deuxième fois ?

Les boutons de repositionnement n'ont aucun effet.

Ou alors, j'ai encore rayé un truc :-$

signaler à un administrateur
Commentaire de Debiars le 21/09/2006 15:27:13

Faut rayer "rayé" et remplacer par raté (c'en est un autre).

signaler à un administrateur
Commentaire de Francky23012301 le 21/09/2006 19:55:45

Argg Monsieur Débiars tu as des yeux de Linx :


"Mais pourquoi diable suis-je obligé de recharger le film pour le voir une deuxième fois ?" : Car Francky est un gros feignant lol. En fait le coté TMediaPlayer me gonflait à coder donc j'ai fais le stricte minimum lol. Allez je reverais ca ce week end pour toi : t'es gaté  en ce moment ;).

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Image de fond dans un TreeView [ par Valérie ] Bonjour, J'utilise une application DELPHI6 CLX et je n'aarive pas à avoir une image de fond dans mon TreeView. L'événement OnPaint n'existe pas. Si ListView, TreeView ! INDEX! [ par rtfm ] Salut ma petit gang de delphinologue ;pJ'ai un petit probleme.. J'aurais besoin d'une manière de stocker la crée primaire de la string que j'ajoute a TreeView [ par XJapan ] Salut à tous !Je voudrais savoir si il a possibilite de changer le contenue d'un TreeView par click sur un bouton. J'ai du mal a me depatouiller avec ListView-TreeView [ par Gysmo ] Salut,Ou puis-je trouver un exemple sur la sychro ListView-TreeView, a la maniere de ShellListView-ShellTreeView?Merci. PB ListView [ par Gysmo ] Voila j'ai un ListView sinchro avec un TreeView.Le prob est ke kan je suis en mode vsReport, j'ai des info type taille du fichier, ben si je change de Application MDI et Drag and drop [ par zorg63 ] Bonjour,mon problème: J'ai créé une application MDI avec des form mdichild contenant un treeview et une listview. Je veux pouvoir faire du drag and dr Pb sur TreeView [ par ogizmo ] Bonjour à tous,Lorsque je valorise la propriété root d'un treeview sur mon appli, seul le premier répertoire sur la racine est affichée :root = 'C:\wi MySQL Erreur [ par davix123 ] Bonjour,j'utilise le composant d'alexanderpopov présent sur ce site pour faire des connexions MySQL.Mon programme fonctionne avec une TreeView. Pour l Treeview [ par stailer ] Bonjour tout le monde !Alors voila, j'ai un problème de treeview :Donc j'ai un treeview avec un imagelist comportant 3 images. Quand je sélectionne un Treeview [ par hippocampe2912 ] Bonjour,j'ai Delphi4.je souhaiterai imprimer un treeview.En passant par l'intermédiare d'un RichEdit je peux imprimer le texte de ce treeview mais je


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,577 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.