ÉDITEUR D'IMAGES

cs_bgK Messages postés 131 Date d'inscription vendredi 7 juin 2002 Statut Membre Dernière intervention 19 janvier 2004 - 3 janv. 2003 à 11:40
cs_Comfort Messages postés 2 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 3 août 2006 - 3 août 2006 à 18:37
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/12269-editeur-d-images

cs_Comfort Messages postés 2 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 3 août 2006
3 août 2006 à 18:37
Bravo
ilyes2275 Messages postés 1 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 26 janvier 2003
26 janv. 2003 à 15:58
Salut Dalamar,
je bosse sur un prog qui resemble au tien, j'ai inclu quelque fonctionalités que tu n'a pas mis dans le tien, si tu veut on peut travailler a deux sur ce prog, et sortir une bonne mouture sur le net.
Si t'es interessé, envoie moi un mail sur : iox@fr.st
Salut et @+
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
6 janv. 2003 à 21:51
Cool :D
cs_Dalamar Messages postés 63 Date d'inscription samedi 22 décembre 2001 Statut Membre Dernière intervention 22 décembre 2003
4 janv. 2003 à 04:09
Merci beaucoup DelphiProg!
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
3 janv. 2003 à 22:49
Pour réaliser une loupe sur une partie de l'écran, regardes sur le site de Nono40 (http://nono40.fr.st), rubriques sources.
cs_Dalamar Messages postés 63 Date d'inscription samedi 22 décembre 2001 Statut Membre Dernière intervention 22 décembre 2003
3 janv. 2003 à 16:39
merci beaucoup pour la suggestion. Je ne savais pas utiliser scanline. Je vais optimiser les autres fonctions aussi...
cs_bgK Messages postés 131 Date d'inscription vendredi 7 juin 2002 Statut Membre Dernière intervention 19 janvier 2004
3 janv. 2003 à 11:40
Pas mal ton prog !!! Par contre, il manque un peu d'optimisation. Par exemple, pour la fonction invert, il faut utiliser TBitmap.ScanLine, qui est beaucoup plus rapide que GetPixel(x,y). Il est plus long pour le CPU de faire r := 255 - r; que r := not r;, ce qui donne le même résultat. Voici ta fonction un peu optimisée :

procedure invert(buffer:TBitmap);
Type
TRGBTripleArray = array[Word] of TRGBTriple;
PRGBTripleArray = ^TRGBTripleArray;
var color: TRGBTriple;
h,w,a:integer;
begin
for h:=0 to buffer.height - 1 do begin
for w:=0 to buffer.Width - 1 do begin
Move(PRGBTripleArray(buffer.ScanLine[h])^[w],Color,3);

Color.rgbtRed := not Color.rgbtRed;
Color.rgbtGreen := not Color.rgbtGreen;
Color.rgbtBlue := not Color.rgbtBlue;

Move(Color,PRGBTripleArray(buffer.ScanLine[h])^[w],3);

application.ProcessMessages ;
end;
end;
end;

Avec cette fonction, pour une image en 800x600, sur mon PC, le temps de calcul est passé de 2s à 700ms, ce qui n'est pas rien !!

Il est possible d'utiliser les API InvertRgn ou InvertRect pour faire ça encore plus rapidement, mais ce n'est pas interessant ...
Rejoignez-nous