Je cherche a charger ne memoire une Jpeg et a effectuer des copyrect dans un autre canvas comme je le ferais avec un TBitmap.
TJpegImage ne contiens pas de Canvas....
Version imprimable
Je cherche a charger ne memoire une Jpeg et a effectuer des copyrect dans un autre canvas comme je le ferais avec un TBitmap.
TJpegImage ne contiens pas de Canvas....
Bjr
Essai :
Code:
1
2
3
4
5
6
7
8
9
10 procedure JPEGToBitMap(FichierJPG : String; Bitmap:TBitmap); var ImageJPG:TJPEGImage; begin ImageJPG:=TJPEGImage.Create; ImageJPG.LoadFromFile(FichierJPG); ImageJPG.DIBNeeded; Bitmap.Assign(ImageJPG); ImageJPG.Free; end;
@+
Php
Visiblement non ... cela ne marche pas.
Une autre idee ? ;)
Oki c'ets bon je n'est rien dit ;)
juste une erreur lors de l'appel a DibNeeded.
Par contre si qqun peut m'expliquer le phenomene de "assign" car j'ai du mal a saisir le fait de pouvoir assigner 2 classe differentes ... meme si elles herites toutes deux d'un meme ancetre.
Sinon, tu peux faire ça aussi :
Assign, c'est un opérateur de recopie. Il va recopier tous les champs de la classe source dans la classe de destination. Dans ce cas, le jpeg n'est plus compressé, donc, en utilisant la recopie, tu affectes toutes les informations du jpeg dans le bitmap.Code:
1
2
3
4
5
6
7
8
9
10
11
12 procedure JPEGToBitMap(FichierJPG : String; Bitmap:TBitmap); var ImageJPG:TJPEGImage; begin ImageJPG:=TJPEGImage.Create; ImageJPG.LoadFromFile(FichierJPG); Bitmap:= TBitmap.Create; Bitmap.Height := ImageJPG.Height; Bitmap.Width := ImageJPG.Width; Bitmap.Canvas.Draw(0,0,ImageJPG); ImageJPG.Free; end;
Oki ... ta solution me parait plus propre...
J'avais oublie le parametre "Tgraphic"
Par contre quand il recopie les champs .. il recherche les champs de mme nom je suppose nan ? et meme dans les private ? parce que sinon quel ezt le parametre qui s'occupe de gerer le "tableau de pixels" .... je pensais que c'etait le canvas.
Pas du tout ! Assign est une méthode comme les autres ;) Elle est déclarée dans la classe TPersistent et surchargée dans presque tous ses descendants (ou la méthode AssignTo selon les cas) afin de pouvoir recopier des objets.Citation:
Envoyé par MD Software
Lorsque tu crées un objet qui doit pouvoir être recopié, il doit descendre de TPersistent et surcharger l'une ou l'autre des méthodes Assign et AssignTo. Ces méthodes testent en général la classe (au moyen de l'opérateur is) de source/destination respectivement pour savoir si la copie est possible ou pas. Si c'est le cas, ces méthodes copient chaque champ un à un. Si ce n'est pas le cas, il faut appeler la méthode héritée correspondante.
La méthode Assign implémentée dans TPersistent appelle la méthode AssignTo de l'objet source avec Self en paramètre. La méthode AssignTo, elle, déclenche une exception EConvertError avec le message "%s ne peut être affecté à %s", où les deux paramètres de format sont les noms de classe des objets source et destination respectivement. Un exemple que tu connais bien est "TFont ne peut être affecté à TFont" ;)
Voilà j'espère que c'est plus clair comme ça :?
Bien môssier le professeur ;)
en effet c'est plus clair .... j'ai un peu eu la flemme de farfouille une enieme fois dans le code borland :/
Ca me parrait plus logique comme ca.
Donc quand on assigne un TJpegImage a un TBitmap, il ne fait en fait que les assign de l'ancetre commun : TGraphics qui lui doit surement implementer "l'espace de stockage des donnees de l'image" ....
Merci pour ces infos ;)
@sjrd : on est d'accord.
Ouf tu me rassures :D ;)Citation:
Envoyé par MD Software