Bonjour et tout d'abord merci pour vos contributions...
Je suis parti sur l'idée de Gilbert. Ne connaissant pas les "Streams" j'ai cherché des infos sur internet et je suis finalement arrivé tant bien que mal à faire un petit programme qui à partir de deux images JPG A et B font un seul fichier A+B (je me contente pr le moment de concaténer simplement).
Et paralèllement j'ai fait le programme inverse qui à partir du fichier A+B me redonne A et B, connaissant le début de B.
Voici une partie du code du programme qui découpe A+B et qui récupére uniquement le fichier B et qui en meme temps charge B dans un Tmemorystream (à terme je ne veux pas redecouper en créant un fichier mais simplement le charger en mémoire) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| procedure TForm1.Button1Click(Sender: TObject);
begin
T2:='test'; // A+B
T4:='test2.jpg'; // A
T5:='test5.jpg'; // B
E := TFileStream.Create(T4, fmCreate);
E2 := TFileStream.Create(T5, fmCreate);
L1 := TFileStream.Create(T2, fmOpenRead);
Memostream:=Tmemorystream.create;
L1.position:=1781904; // je me place au début de B
for i:=1 to 169657 do // je parcoure la "zone" de B
begin
L1.readBuffer(b,sizeof(byte)); // Je lis le fichier A+B
E2.WriteBuffer(b,sizeof(byte)); //J'écris ce que je lis dans E2 (Filestream)
memostream.WriteBuffer(b,sizeof(byte)); //J'ecris ce que je lis dans memostream
end;
pict:=TjpegImage.create;
pict.LoadFromStream(Memostream); //Je charge dans Pict mon Memostream
image1.picture.bitmap.assign(pict); //J'affiche Pict (Erreur #41)
E.free;
E2.free;
L1.free;
pict.free;
end; |
Le probleme c'est que je n'arrive pas a afficher l'image dans un Timage placé sur ma form. Ca me renvoie une erreur JPG#41 (format invalide). Pourtant le fichier crée en meme temps que je remplis mon memory stream est bien un jpg valide car je peux l'afficher sans probleme avec paint. Et c'est bien la derniere ligne qui cause l'erreur
image1.picture.bitmap.assign(pict); //J'affiche Pict (Erreur #41)
Est ce que je me sers bien de Memorystream?
Soyez indulgent avec mon code je suis pas informaticien
Merci !
Thierry
Partager