[R] Ouvrir et Modifier un image

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
L4crymal
Niveau 8
Niveau 8
Messages : 513
Enregistré le : mer. 24 sept. 2008 14:53
Status : Hors ligne

[R] Ouvrir et Modifier un image

#1

Message par L4crymal »

Bonjour tout le monde, je souhaiterai connaitre la meilleur technique pour ouvrir et modifier pixel par pixel une image avec autoit merci :)


( je pense pas que ce soit déjà demander )
Modifié en dernier par L4crymal le sam. 06 juin 2009 22:18, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#2

Message par Tlem »

Moi je dirais :

Code : Tout sélectionner

$Image = @WindowsDir & "\winnt256.bmp"

ShellExecute("mspaint.exe", $Image)
WinWait("Paint")

Opt("SendKeyDelay",100)
Send('!AZP')
Send('{RIGHT 4}{ENTER}')

MsgBox(64,"YEAAAAA","Ca c'est du zoom ...")
:lol: :lol: :lol: :lol: :lol:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
L4crymal
Niveau 8
Niveau 8
Messages : 513
Enregistré le : mer. 24 sept. 2008 14:53
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#3

Message par L4crymal »

Et + serieusement ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#4

Message par Tlem »

Heuuu, je n'en sais fichtre rien et pour l'instant, je n'ai pas vraiment le temps de regarder.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
L4crymal
Niveau 8
Niveau 8
Messages : 513
Enregistré le : mer. 24 sept. 2008 14:53
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#5

Message par L4crymal »

Oups... Si Thierry ne sais pas... Alors qui peut savoir :P
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#6

Message par Tlem »

Je trouve, que parfois on me surestime un peut trop ...
Je ne suis qu'un bricoleur du Dimanche. :P
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
L4crymal
Niveau 8
Niveau 8
Messages : 513
Enregistré le : mer. 24 sept. 2008 14:53
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#7

Message par L4crymal »

Et puis quoi encore? t'es juste le meilleur quoi...

Bref on s'écarte là :p

Quelqu'un sait comment sont codées les image que ce soit PNJ,BMP ou GIF
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#8

Message par Tlem »

Pfffff ...
Portnawak. :roll:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#9

Message par Iste »

Ben... si t'es motivé... tu peux modifier un .bmp facilement, ya juste quelque octés au début pour le définir, puis tout les pixels sont exprimés un a un en commencant en bas a gauche
Par exemple, pour un petit bmp crée avec pain, j'ai

Code : Tout sélectionner

42 4D EA 00 00 00 00 00 00 00 36 00 00 00 28 00
00 00 13 00 00 00 03 00 00 00 01 00 18 00 00 00
00 00 B4 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00
Puis chaque pixel sous la forme BB VV RR

Enfin... c'est un peu barbar et ya sans doute mieux a faire, mais ca marche....
Signez ici
Avatar du membre
L4crymal
Niveau 8
Niveau 8
Messages : 513
Enregistré le : mer. 24 sept. 2008 14:53
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#10

Message par L4crymal »

En faite j'aimerais juste savoir comment créer une image ( bmp ou autre ) seulement en disant un part un les pixel que je veut par exemple:

je créer une fonction qui ajoute un pixel à l'image ( qui ne fait que un pixel de hauteur ) en largeur et qui prend seulement en paramètre la couleur que je veux, c'est possible ?
Avatar du membre
L4crymal
Niveau 8
Niveau 8
Messages : 513
Enregistré le : mer. 24 sept. 2008 14:53
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#11

Message par L4crymal »

J'ai trouver ça pour lire une image BMP

Code : Tout sélectionner

;
#include <GDIPlus.au3>

Opt('MustDeclareVars', 1)
Local $hBitmap

_GDIPlus_Startup()
$hBitmap = _GDIPlus_BitmapCreateFromFile("test.bmp"); Enter path/name of image file here.
MsgBox(0, "", _GDIPlus_BitmapGetPixel($hBitmap, 0,0)); 0,0 is top left corner pixel of image.
For $i=1 to 20
FileWrite("ici.txt",_GDIPlus_BitmapGetPixel($hBitmap, $i, 0)&@CRLF)
Next
; Clean up resources
_GDIPlus_ImageDispose($hBitmap)

; Shut down GDI+ library
_GDIPlus_Shutdown()

Func _GDIPlus_BitmapGetPixel($hBitmap, $iX, $iY)
    Local $tArgb, $pArgb, $aRet
    $tArgb = DllStructCreate("dword Argb")
    $pArgb = DllStructGetPtr($tArgb)
    $aRet = DllCall($ghGDIPDll, "int", "GdipBitmapGetPixel", "hwnd", $hBitmap, "int", $iX, "int", $iY, "ptr", $pArgb)
    Return "0x" & Hex(DllStructGetData($tArgb, "Argb"))
EndFunc  ;==>_GDIPlus_BitmapGetPixel
;s
 
( le fichier fait dabbord une MSGBOX avec la couleur du premier pixel en haut a gauche, puis il lit les 20 premiers pixels et met leur couleur dans un fichier texte )

PLUS QUE A TROUVER POUR ÉDITER CES PIXELS !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#12

Message par orax »

C'est quasiment la même chose pour les éditer :
(avec $iARGB = alpha, rouge, vert, bleu)

Code : Tout sélectionner

Func _GDIPlus_BitmapSetPixel($hBitmap, $iX, $iY, $iARGB = 0xFF000000)
    DllCall($ghGDIPDll, "int", "GdipBitmapSetPixel", "hwnd", $hBitmap, "int", $iX, "int", $iY, "dword", $iARGB)
EndFunc   ;==>_GDIPlus_BitmapSetPixel
http://msdn.microsoft.com/en-us/library/ms533971.aspx
http://msdn.microsoft.com/en-us/library ... S.85).aspx
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
L4crymal
Niveau 8
Niveau 8
Messages : 513
Enregistré le : mer. 24 sept. 2008 14:53
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#13

Message par L4crymal »

Eu comment? j'ai essayer comme ça mais aucun resultat :

Code : Tout sélectionner

#include <GDIPlus.au3>

Opt('MustDeclareVars', 1)
Local $hBitmap

_GDIPlus_Startup()
$hBitmap = _GDIPlus_BitmapCreateFromFile("Image.bmp"); Enter path/name of image file here.
For $i=1 to 20
_GDIPlus_BitmapSetPixel($hBitmap, $i,$i)
Next
; Clean up resources
_GDIPlus_ImageDispose($hBitmap)

; Shut down GDI+ library
_GDIPlus_Shutdown()

Func _GDIPlus_BitmapSetPixel($hBitmap, $iX, $iY, $iARGB = 0xFF000000)
    DllCall($ghGDIPDll, "int", "GdipBitmapSetPixel", "hwnd", $hBitmap, "int", $iX, "int", $iY, "dword", $iARGB)
EndFunc   ;==>_GDIPlus_BitmapSetPixel
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#14

Message par Iste »

heu, je vais essayer de tester ca dans l'aprem, mais peut etre qu'il faudrait un _GDIPlus_ImageSaveToFile($hBitmap,"Image2.bmp")

Edit ; Je confirme, ce code est fonctionel

Code : Tout sélectionner

#include <GDIPlus.au3>

Opt('MustDeclareVars', 1)
Local $hBitmap

_GDIPlus_Startup()
$hBitmap = _GDIPlus_BitmapCreateFromFile("img.bmp"); Enter path/name of image file here.
For $i=1 to 20
_GDIPlus_BitmapSetPixel($hBitmap, $i,$i,0x50500000)
Next
_GDIPlus_ImageSaveToFile($hBitmap,"Image2.bmp")
; Clean up resources
_GDIPlus_ImageDispose($hBitmap)

; Shut down GDI+ library
_GDIPlus_Shutdown()

Func _GDIPlus_BitmapSetPixel($hBitmap, $iX, $iY, $iARGB = 0xFF000000)
    DllCall($ghGDIPDll, "int", "GdipBitmapSetPixel", "hwnd", $hBitmap, "int", $iX, "int", $iY, "dword", $iARGB)
EndFunc   ;==>_GDIPlus_BitmapSetPixel
PS : Merci d'avoir posé la question, je sent que ca va m'ammuser ce truc ^^
Signez ici
Avatar du membre
L4crymal
Niveau 8
Niveau 8
Messages : 513
Enregistré le : mer. 24 sept. 2008 14:53
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#15

Message par L4crymal »

TROP BIEN MERCI !!!

Mais eu c'est possible d'ajouter aussi des pixels? car si on édite des pixels qui n'existe pas encore, malheureusement ça ne fonctionne pas :P
Avatar du membre
L4crymal
Niveau 8
Niveau 8
Messages : 513
Enregistré le : mer. 24 sept. 2008 14:53
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#16

Message par L4crymal »

UP
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#17

Message par Iste »

Alors, apres quelque recherche, il te faudra surement créer l'image de toute piece.
Créer un BMP n'est pas si dur, mais le modifier demande quand meme quelque calcule.
Si tu as le courage, lis ces deux page, et bonne chance ^^
http://www.commentcamarche.net/contents ... t-bmp.php3
http://www.rcweb.fr/image/bmp.html

Code : Tout sélectionner

#Include <String.au3>

$largeur = 86
$hauteur = 150
$Poid_Image = $largeur*$hauteur*3
$NB_pixel = $Poid_Image
$Poid_Fichier = $Poid_Image+54

$largeur = StringRegExp(Hex($largeur),"0*([0-9]*)",1)
$largeur = $largeur[0] & _StringRepeat ("0",8-StringLen ($largeur[0]))
$hauteur = StringRegExp(Hex($hauteur),"0*([0-9]*)",1)
$hauteur = $hauteur[0] & _StringRepeat ("0",8-StringLen ($hauteur[0]))
$Poid_Image = StringRegExp(Hex($Poid_Image),"0*([0-9]*)",1)
$Poid_Image = $Poid_Image[0] & _StringRepeat ("0",8-StringLen ($Poid_Image[0]))
$Poid_Fichier = StringRegExp(Hex($Poid_Fichier),"0*([0-9]*)",1)
$Poid_Fichier = $Poid_Fichier[0] & _StringRepeat ("0",8-StringLen ($Poid_Fichier[0]))

$image = "424D"
$image &= $Poid_Fichier
$image &= "00000000"
$image &= "36000000"
$image &= "28000000"
$image &= $hauteur
$image &= $largeur
$image &= "0100"
$image &= "1800"
$image &= "00000000"
$image &= $Poid_Image
$image &= "C40E0000"
$image &= "C40E0000"
$image &= "00000000"
$image &= "00000000"
For $i = 1 To $NB_pixel*3
    $image &= Hex(Random(1,255))
Next

;~ $image &= "FF0000000000FF00FFFFFFFF0000FF00FF0000FFFFFFFF00"

$file = FileOpen("Tsete.bmp",18)
FileWrite($file,_HexToString($image))
Modifié en dernier par Iste le sam. 06 juin 2009 23:57, modifié 1 fois.
Signez ici
Avatar du membre
L4crymal
Niveau 8
Niveau 8
Messages : 513
Enregistré le : mer. 24 sept. 2008 14:53
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#18

Message par L4crymal »

Ouais mais j'ai pas compris un petit truc ( la taille en octet de l'image est immense comparée à la réel taille de l'image ), petite explication pliz ? :oops:
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#19

Message par Iste »

Ben heu... non :/ c'est normal (je crois)
Il faut 3octé par pixel
Donc Largeur*Hauteur*3 = taille de l'image
Sinon tu peux encoder avec moins d'octé par pixel et perdre de la qualité (voir mes précédent liens)

C'est bien ca ? ou on parle pas du meme truc ?

Edit d'ailleur je me suis planté dans mon script,c'est $Poid_Image = $largeur*$hauteur*3
mais bon, ca marche quand meme (ou alors je me suis pas planté, et je comprend plus ce que j'ai fais ^^')

Edit 2 : Je confirme, ya plein d'erreur dans mes calcul de poids, mais j'ai fais ca a la va vite
Quand jouvre l'image sous paint (ca marche ^^) et que je la réengistre, il change des trucs, donc c'est bien que ca lui plaisait pas. Reste a compendre pk...
Modifié en dernier par Iste le sam. 06 juin 2009 22:31, modifié 2 fois.
Signez ici
Avatar du membre
L4crymal
Niveau 8
Niveau 8
Messages : 513
Enregistré le : mer. 24 sept. 2008 14:53
Status : Hors ligne

Re: [..] Ouvrir et Modifier un image

#20

Message par L4crymal »

AAAAAAAAAAAAAA D'ACCORD, Merci encore beaucoup pour ton aide c'est super sympa de pouvoir compter sur toi merci merci merci^^
Répondre