modifier bmp

Y compris Power BI, Power Query et toute autre question en lien avec Excel
i
icemake
Jeune membre
Jeune membre
Messages : 40
Inscrit le : 4 juillet 2016
Version d'Excel : 2007 fr

Message par icemake » 10 novembre 2017, 10:06

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 ?
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'394
Appréciations reçues : 163
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 10 novembre 2017, 10:40

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+
Question portant sur VBA : Je ne répond pas si la question ne comporte pas le classeur KIVABIEN avec.
i
icemake
Jeune membre
Jeune membre
Messages : 40
Inscrit le : 4 juillet 2016
Version d'Excel : 2007 fr

Message par icemake » 10 novembre 2017, 10:49

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
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'394
Appréciations reçues : 163
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 10 novembre 2017, 11:00

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+
Question portant sur VBA : Je ne répond pas si la question ne comporte pas le classeur KIVABIEN avec.
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'334
Appréciations reçues : 393
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 10 novembre 2017, 11:48

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
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
i
icemake
Jeune membre
Jeune membre
Messages : 40
Inscrit le : 4 juillet 2016
Version d'Excel : 2007 fr

Message par icemake » 10 novembre 2017, 13:46

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 )
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'334
Appréciations reçues : 393
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 10 novembre 2017, 14:09

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...
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message