Modifier bmp
bonjour,
je souhaiterais pouvoir modifier les couleur d'une image bmp via une macro,
dans les souvenir que j'ai le plus simple pour ça c'est d'avoir une image au format bmp vu que lorsqu'on l'ouvre avec un éditeur de texte on peut modifier le fichier directement,
Mon premier soucis est que le nouveau fichier bmp que je crée n'est pas lisible par paint ou le visionneur de windows
alors que je fais qu'un vulgaire copier coller
je vous mets le petit code qui devrait marcher
Sub test()
ReDim valeur(0)
num = FreeFile
Open "C:\Users\utilisateur\Desktop\Sans titre2.bmp" For Input As #num
i = -1
While Not EOF(1)
i = i + 1
Line Input #1, valeur(i)
ReDim Preserve valeur(UBound(valeur) + 1)
Wend
Close #num
num = FreeFile
'Ouvre en écriture et écrase un fichier précédent du même nom
Open "C:\Users\utilisateur\Desktop\Sans titre.bmp" For Output As #num
'Boucle sur la liste des mots
For i = LBound(valeur) To UBound(valeur)
'Ecrit dans le fichier texte ligne par ligne
Print #1, valeur(i)
Next i
'Fermeture
Close #num
End Sub
donc le code pas compliqué, il ouvre comme un texte le fichier bmp et le recopie dans un autre mais le nouveau fichier est illisible alors que c'est les meme
auriez vous une solution ?
bonjour,
Les fichiers .bmp, jpg, mp3, xls, doc... ne sont pas des fichiers texte même s'ils en contiennent plus ou moins...
Ils obéissent tous à des règles strictes de codage, décodage, à des algorithmes de compression... Vouloir les importer, copier, installer relève plus des méthodes de hacking que de la programmation VBA...
Je ne suis pas du tout un expert dans ce genre de sport mais j'imagine que (si c'est possible...) ça passerait plutôt par un éditeur hexadécimal...
A+
d'abord merci pour votre réponse
pourtant j'ai le souvenir qu'un des format image, peut être pas le bmp alors, fonctionnait comme ça
on pouvait le modifier directement depuis un éditeur de texte
je l'ai déjà fait mais il y a longtemps donc je me souviens plus très bien du format image utilisé
car sinon j'ai vu qu'on pouvait utiliser getpixel et setpixel mais c'est d'un lenteur astronomique et donc ne me convient pas
auriez vous d'autre idée pour modifier un image
Pour être plus clair j'ai une image en niveau de gris avec plusieurs cercle, rectangle et je voudrais colorer l’intérieur lorsque je clique dedans, ça fonctionne plus ou moins bien avec getpixels et setpixel mais comme je disais c'est très lent
merci
Je ne sais pas : Ma seule expérience du genre étant les fichiers .wav j'ai un peu extrapolé dans mon commentaire, mébon si quelqu'un à une certaine expérience en la matière je suis preneur de son retour. C'est un peu pour ça que j'ai répondu (pour pouvoir suivre les commentaires à venir...)
A+
Bonjour,
tu devrais ouvrir en For Binary.
Ensuite regarde du coté de Seek (positionner le pointeur d'octet du fichier) et Get/Put pour lire/écrire.
Et n'oublie pas qu'un fichier à souvent un entête à respecter, c'est le cas des bmp. Ne pas écrire n'importe quoi dans cette zone de x octets au début.
Fait une recherche sur le format d'un fichier bmp avant de ta lancer pour savoir où vont se trouver tes données à modifier, et sous quel format. A mon avis 1 pixel sera sur plusieurs octets, sans doute de longueur différente selon la profondeur de couleur.
Quant à écrire un programme qui rempli une forme tu n'es pas au bout de ta peine. Ce qui parait simple pour un esprit humain n'est pas toujours si facile à traduire en algorithme.
Vu le départ que tu a pris et ton niveau apparent en programmation je me tournerai vers une autre solution : prendre un logiciel de graphisme qui fera ça très bien.
eric
merci pour votre réponse je vais regardé ce que vous proposez voir si j'y trouve mon bonheur
pour le programme de remplissage de forme en lui même, il ne devrait pas y avoir de souci, j'ai pas mal d'exemple et j'en ai deja fait des performant, le souci c'est le langage je les ai fait dans d'autre langage que le vba c'est pour ça que je galère autant à l'ouverture d'un fichier
Je reviens vers vous des que j'ai une solution ou si vraiment je ne trouve pas
(car pour l'instant le seek et le get/put sont vraiment inconnu pour moi )
Commence par l'aide excel. F1 sur Get et :
Get [#]filenumber, [recnumber], varname
La syntaxe de l'instruction Get comprend les éléments suivants :
Élément Description
filenumber Tout numéro de fichier valide.
recnumber Facultatif. Donnée de type Variant (Long). Numéro de l'enregistrement (fichiers ouverts en mode Random) ou de l'octet (fichiers ouverts en mode Binary) par lequel la lecture débute.
varname Nom de variable valide destiné à recevoir les données lues.
Get #1,153,v
doit te mettre le 153ème octets du fichier #1 dans la variable v
Mais comme je t'ai dit commence par chercher le format des bmp.
Et à partir de là ça sera sans doute plus simple à utiliser si tu te crées une fonction capable d'aller lire les x octets du xième pixel, voire même le pixel de coordonnées (x,y).
Il faut savoir où on met les pieds avant de se lancer...