OVH Cloud OVH Cloud

Comment placer une Picture dans un tableau de Byte

10 réponses
Avatar
Christian HUBERT-HUGOUD- Xtrem7
Bonjour,

Je voudrais placer une Picture dans un tableau de Byte, pour utiliser
CopyMemory après.
Je ne sais pas retrouver la taille des datas de la Picture
(MyPictureBox.Picture), ni l'adresse de l'élément de départ.

Des idées ?

Cordialement

Christian Hubert-Hugoud

10 réponses

Avatar
Zoury
Salut Christian! :O)

Tu ne peux placer l'objet Picture dans un tableau de byte, mais tu peux
extraire l'image qu'elle contient...

voici deux méthodes faisant cela :
http://www.mentalis.org/apilist/GetDIBits.shtml
http://www.mentalis.org/apilist/GetBitmapBits.shtml


GetDIBits est la méthode préférée.. bien qu'elle soit, pour le moment,
légèrement plus lente et légèrement plus complexe à employer que
GetBitmapBits, cette dernière n'existe que pour des raisons de compatibilité
"ascendante" (pas sûr du terme... et ni de la direction :O) et ne sera
vraisemblablement plus supporté dans l'une ou l'autre des futures versions
de Windows. Aussi GetDIBits sera très propbablement optimisée dans une
version future.

Je te recommande également ce site qui offre des tutoriels et des
explications très solides concernant GDI et la manipulation de bitmap.
http://www.mvps.org/EDais/

--
Cordialement
Yanick
MVP pour Visual Basic

"Christian HUBERT-HUGOUD- Xtrem7" a écrit dans le
message de news:cpc6bm$cjg$
Bonjour,

Je voudrais placer une Picture dans un tableau de Byte, pour utiliser
CopyMemory après.
Je ne sais pas retrouver la taille des datas de la Picture
(MyPictureBox.Picture), ni l'adresse de l'élément de départ.

Des idées ?

Cordialement

Christian Hubert-Hugoud




Avatar
Christian HUBERT-HUGOUD- Xtrem7
Super. Merci.

Cordialement

Christian Hubert-Hugoud

"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:uQ%
Salut Christian! :O)

Tu ne peux placer l'objet Picture dans un tableau de byte, mais tu peux
extraire l'image qu'elle contient...

voici deux méthodes faisant cela :
http://www.mentalis.org/apilist/GetDIBits.shtml
http://www.mentalis.org/apilist/GetBitmapBits.shtml


GetDIBits est la méthode préférée.. bien qu'elle soit, pour le moment,
légèrement plus lente et légèrement plus complexe à employer que
GetBitmapBits, cette dernière n'existe que pour des raisons de


compatibilité
"ascendante" (pas sûr du terme... et ni de la direction :O) et ne sera
vraisemblablement plus supporté dans l'une ou l'autre des futures versions
de Windows. Aussi GetDIBits sera très propbablement optimisée dans une
version future.

Je te recommande également ce site qui offre des tutoriels et des
explications très solides concernant GDI et la manipulation de bitmap.
http://www.mvps.org/EDais/

--
Cordialement
Yanick
MVP pour Visual Basic

"Christian HUBERT-HUGOUD- Xtrem7" a écrit dans le
message de news:cpc6bm$cjg$
> Bonjour,
>
> Je voudrais placer une Picture dans un tableau de Byte, pour utiliser
> CopyMemory après.
> Je ne sais pas retrouver la taille des datas de la Picture
> (MyPictureBox.Picture), ni l'adresse de l'élément de départ.
>
> Des idées ?
>
> Cordialement
>
> Christian Hubert-Hugoud
>
>




Avatar
Christian HUBERT-HUGOUD- Xtrem7
Je m'en occupe. Merci à vous.


Cordialement

Christian Hubert-Hugoud

"christophe-pasde<> @wanadoo.fr>" <"christophe-pasde<> a écrit dans le
message de news:41b9a477$0$3443$
Bonjour,

Quel est le format de votre image ?

Quel est le nombre de couleur ?

comment la chargez-vous ? Loadpicture ?

Pour faire ce genre de chose je vous conseille la lecture de la MSDN sur
Les DIB.
Vous aurez besoin de ces structures.


Christophe

Christian HUBERT-HUGOUD- Xtrem7 a écrit :
> Bonjour,
>
> Je voudrais placer une Picture dans un tableau de Byte, pour utiliser
> CopyMemory après.
> Je ne sais pas retrouver la taille des datas de la Picture
> (MyPictureBox.Picture), ni l'adresse de l'élément de départ.
>
> Des idées ?
>
> Cordialement
>
> Christian Hubert-Hugoud
>
>


Avatar
christophe-pasde
Bonjour,

Quel est le format de votre image ?

Quel est le nombre de couleur ?

comment la chargez-vous ? Loadpicture ?

Pour faire ce genre de chose je vous conseille la lecture de la MSDN sur
Les DIB.
Vous aurez besoin de ces structures.


Christophe

Christian HUBERT-HUGOUD- Xtrem7 a écrit :
Bonjour,

Je voudrais placer une Picture dans un tableau de Byte, pour utiliser
CopyMemory après.
Je ne sais pas retrouver la taille des datas de la Picture
(MyPictureBox.Picture), ni l'adresse de l'élément de départ.

Des idées ?

Cordialement

Christian Hubert-Hugoud




Avatar
Zoury
Salut Christophe!

Merci pour les précisions :O)

--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
christophe-pasde
Bonjour,

En fait il s'agit de deux instructions différentes dans les structures
qu'elles manipulent.

Pour GEtDIBits il s'agit d'un Device Independent Bitmap
bitmap independant du périphérique.
Necessite un pointeur sur une structure DIB

Pour GetBitmapBits il s'agit d'un Device Dependent Bitmap
bitmap dependant du périphérique, necessite un handle de bitmap (en
général créé par Createcompatiblebitmap(0&) (compatible avec l'ecran).

La tendance est effectivement de manipuler des DIB soit de manière
indépendante des API windows sauf pour l'affichage soit au travers des
DIBsections.
J'ai opté pour la première.

Christophe


Zoury a écrit :

Salut Christian! :O)

Tu ne peux placer l'objet Picture dans un tableau de byte, mais tu peux
extraire l'image qu'elle contient...

voici deux méthodes faisant cela :
http://www.mentalis.org/apilist/GetDIBits.shtml
http://www.mentalis.org/apilist/GetBitmapBits.shtml


GetDIBits est la méthode préférée.. bien qu'elle soit, pour le moment,
légèrement plus lente et légèrement plus complexe à employer que
GetBitmapBits, cette dernière n'existe que pour des raisons de compatibilité
"ascendante" (pas sûr du terme... et ni de la direction :O) et ne sera
vraisemblablement plus supporté dans l'une ou l'autre des futures versions
de Windows. Aussi GetDIBits sera très propbablement optimisée dans une
version future.

Je te recommande également ce site qui offre des tutoriels et des
explications très solides concernant GDI et la manipulation de bitmap.
http://www.mvps.org/EDais/

--
Cordialement
Yanick
MVP pour Visual Basic

"Christian HUBERT-HUGOUD- Xtrem7" a écrit dans le
message de news:cpc6bm$cjg$

Bonjour,

Je voudrais placer une Picture dans un tableau de Byte, pour utiliser
CopyMemory après.
Je ne sais pas retrouver la taille des datas de la Picture
(MyPictureBox.Picture), ni l'adresse de l'élément de départ.

Des idées ?

Cordialement

Christian Hubert-Hugoud









Avatar
christophe-pasde
Pour une fois que c'est dans ce sens et pas l'inverse ...

A+

Amicalement

Christophe

Zoury a écrit :

Salut Christophe!

Merci pour les précisions :O)

--
Cordialement
Yanick
MVP pour Visual Basic




Avatar
christophe-pasde
Bonjour,

Je pense que vous avez la réponse (et celle du Maître es API graphic)

You don't think so ?

Christophe

Christian HUBERT-HUGOUD- Xtrem7 a écrit :

Bonjour,

Je voudrais placer une Picture dans un tableau de Byte, pour utiliser
CopyMemory après.
Je ne sais pas retrouver la taille des datas de la Picture
(MyPictureBox.Picture), ni l'adresse de l'élément de départ.

Des idées ?

Cordialement

Christian Hubert-Hugoud




Avatar
lou
salut
pour copier une image qui se trouve sur ton form vers word

Private Sub Commande20_Click()
Dim W_App As Object
Set W_App = CreateObject("Word.Application")
With W_App
.Visible = True 'ou FALSE
.Documents.Add
Me.ImageOLE.Action = 4
.Selection.Paste
' .ActiveDocument.Saveas "c:doc1.doc"
' .Quit
End With
Set W_App = Nothing
End Sub

"christophe-pasde<> @wanadoo.fr>" <"christophe-pasde<> a écrit dans le
message de news: 41bb1427$0$3426$
Bonjour,

Je pense que vous avez la réponse (et celle du Maître es API graphic)

You don't think so ?

Christophe

Christian HUBERT-HUGOUD- Xtrem7 a écrit :

> Bonjour,
>
> Je voudrais placer une Picture dans un tableau de Byte, pour utiliser
> CopyMemory après.
> Je ne sais pas retrouver la taille des datas de la Picture
> (MyPictureBox.Picture), ni l'adresse de l'élément de départ.
>
> Des idées ?
>
> Cordialement
>
> Christian Hubert-Hugoud
>
>


Avatar
Patrick Philippot
lou wrote:
salut
pour copier une image qui se trouve sur ton form vers word

Private Sub Commande20_Click()
Dim W_App As Object
Set W_App = CreateObject("Word.Application")
With W_App
.Visible = True 'ou FALSE
.Documents.Add
Me.ImageOLE.Action = 4
.Selection.Paste
' .ActiveDocument.Saveas "c:doc1.doc"
' .Quit
End With
Set W_App = Nothing
End Sub



Bonjour,

L'idée est intéressante mais le problème, c'est qu'il faut a priori que
ça fonctionne dans l'autre sens (si j'ai bien compris). Word n'est qu'un
cas de figure possible. Cela peut être n'importe quelle appli cliente
supportant DDE ou pouvant être un client Automation. L'application
serveur ne peut pas mettre en place du code pour chaque cas.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr