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...

Rechercher des sujets similaires à "modifier bmp"