OVH Cloud OVH Cloud

Cadrer une image.

11 réponses
Avatar
mg
Bonjour,

je souhaite à partir d'une application Vb, pouvoir cadrer une image .
Merci de votre aide.

10 réponses

1 2
Avatar
mg
Cadrer = on selectionne un rectangle de l'image et on a une nouvelle image
juste pour le rectangle.
c'est un echantillon de l'amge en gros

"mg" a écrit dans le message de news:
425782f3$0$3110$
Bonjour,

je souhaite à partir d'une application Vb, pouvoir cadrer une image .
Merci de votre aide.





Avatar
Jean-Marc
"mg" a écrit dans le message de
news:425782f3$0$3110$
Bonjour,

je souhaite à partir d'une application Vb, pouvoir cadrer une image .
Merci de votre aide.



Hello,

peux tu expliquer ce que tu entends par "cadrer"?

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Avatar
François Picalausa
Hello,

Il est possible de le faire via paintpicture.
Les coorrdonnées de cadrage correspondent alors à Width, Height, X2, Y2

--
François Picalausa

"mg" a écrit dans le message de news:
4257872c$0$19340$
Cadrer = on selectionne un rectangle de l'image et on a une nouvelle
image juste pour le rectangle.
c'est un echantillon de l'amge en gros

"mg" a écrit dans le message de news:
425782f3$0$3110$
Bonjour,

je souhaite à partir d'une application Vb, pouvoir cadrer une image .
Merci de votre aide.




Avatar
Jean-Marc
Hello,
voici un mini exemmple qui implémente la solution de Fraçois:
Il faut: une form, 2 picturesbox, mettre une image dans picture1
Cliquer dans picture1 (point haut/gauche du rectangle de sélection souhaité)
MAINTENIR le clic, déplacer la souris vers le point bas/droite souhaité,
et relacher.
Picture2 va contenir la zone sélectionné dans picture1.
Note:
Il faut un peu plus de code si on veut empécher les effets
possibles de déformation introduits par les proportions possiblement
différentes de la sélection et des proportions du picture de destination
Quelques règles de 3 et le tour est joué :-)

Option Explicit

Dim x1 As Single
Dim Y1 As Single
Dim x2 As Single
Dim y2 As Single

Private Sub picture1_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
x1 = X
Y1 = Y
End Sub

Private Sub picture1_MouseUp(Button As Integer, Shift As Integer, X As
Single, Y As Single)
x2 = X
y2 = Y

Picture2.PaintPicture Picture1.Picture, 0, 0, Picture2.Width,
Picture2.Height, x1, Y1, x2 - x1, y2 - Y1
End Sub

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."

"François Picalausa" a écrit dans le message de
news:%
Hello,

Il est possible de le faire via paintpicture.
Les coorrdonnées de cadrage correspondent alors à Width, Height, X2, Y2

--
François Picalausa

"mg" a écrit dans le message de news:
4257872c$0$19340$
> Cadrer = on selectionne un rectangle de l'image et on a une nouvelle
> image juste pour le rectangle.
> c'est un echantillon de l'amge en gros
>
> "mg" a écrit dans le message de news:
> 425782f3$0$3110$
>> Bonjour,
>>
>> je souhaite à partir d'une application Vb, pouvoir cadrer une image .
>> Merci de votre aide.




Avatar
mg
ça marcher bien ta solution Jean-Marc, sauf que :
- Je souhaite récuperer l'image cadrer dans un fichier que je peut
enregistrer sur le disque
- Pouvoir voir ce que je cadre.

Merci d'avance.

"Jean-Marc" a écrit dans le message de
news: 4257952a$0$1413$
Hello,
voici un mini exemmple qui implémente la solution de Fraçois:
Il faut: une form, 2 picturesbox, mettre une image dans picture1
Cliquer dans picture1 (point haut/gauche du rectangle de sélection


souhaité)
MAINTENIR le clic, déplacer la souris vers le point bas/droite souhaité,
et relacher.
Picture2 va contenir la zone sélectionné dans picture1.
Note:
Il faut un peu plus de code si on veut empécher les effets
possibles de déformation introduits par les proportions possiblement
différentes de la sélection et des proportions du picture de destination
Quelques règles de 3 et le tour est joué :-)

Option Explicit

Dim x1 As Single
Dim Y1 As Single
Dim x2 As Single
Dim y2 As Single

Private Sub picture1_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
x1 = X
Y1 = Y
End Sub

Private Sub picture1_MouseUp(Button As Integer, Shift As Integer, X As
Single, Y As Single)
x2 = X
y2 = Y

Picture2.PaintPicture Picture1.Picture, 0, 0, Picture2.Width,
Picture2.Height, x1, Y1, x2 - x1, y2 - Y1
End Sub

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."

"François Picalausa" a écrit dans le message de
news:%
> Hello,
>
> Il est possible de le faire via paintpicture.
> Les coorrdonnées de cadrage correspondent alors à Width, Height, X2, Y2
>
> --
> François Picalausa
>
> "mg" a écrit dans le message de news:
> 4257872c$0$19340$
> > Cadrer = on selectionne un rectangle de l'image et on a une nouvelle
> > image juste pour le rectangle.
> > c'est un echantillon de l'amge en gros
> >
> > "mg" a écrit dans le message de news:
> > 425782f3$0$3110$
> >> Bonjour,
> >>
> >> je souhaite à partir d'une application Vb, pouvoir cadrer une image .
> >> Merci de votre aide.
>
>




Avatar
François Picalausa
Hello,

Pour l'enregistrement et la lecture d'image, il te faudra des boites de
dialogue.
Tu peux voir sur la FAQ cet exemple:
http://faq.vb.free.fr/index.php?question

Le chargement de l'image s'effectuera à l'aide de LoadPicture,
l'enregistrement avec SavePicture, et des propriétés Picture et Image des
deux contrôles.

Pour voir la zone de travail, tu peux, par exemple, employer un contrôle
shape rectangulaire qui sera redimensionné de manière adéquate, lors de
mousemove.

Voici un exemple, sur base du code de Jean-Marc, qui illustre l'emploi d'un
contrôle shape supplémentaire pour afficher la zone de recadrage:
Option Explicit

Dim x1 As Single
Dim Y1 As Single
Dim x2 As Single
Dim y2 As Single

Private Sub Form_Load()
Shape1.Visible = False
End Sub

Private Sub picture1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
x1 = X
Y1 = Y

With Shape1
.Left = X + Picture1.Left
.Top = Y + Picture1.Top
.Width = 1
.Height = 1
.Visible = True
End With
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
x2 = X
y2 = Y

With Shape1
'Le +1 est présent pour éviter width =0
'abs, pour éviter une width < 0
'Je laisse le soin aux utilisateurs de cet exemple
'de modifier cet immonde bidouillage
.Width = Abs(x1 - x2) + 1
.Height = Abs(Y1 - y2) + 1
End With
End Sub

Private Sub picture1_MouseUp(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
x2 = X
y2 = Y

Shape1.Visible = False

Picture2.PaintPicture Picture1.Picture, 0, 0, Picture2.Width, _
Picture2.Height, x1, Y1, x2 - x1, y2 - Y1
End Sub

--
François Picalausa

"mg" a écrit dans le message de news:
4257a299$0$25042$
ça marcher bien ta solution Jean-Marc, sauf que :
- Je souhaite récuperer l'image cadrer dans un fichier que je peut
enregistrer sur le disque
- Pouvoir voir ce que je cadre.

"Jean-Marc" a écrit dans le message
de news: 4257952a$0$1413$
Hello,
voici un mini exemmple qui implémente la solution de Fraçois:
Il faut: une form, 2 picturesbox, mettre une image dans picture1
Cliquer dans picture1 (point haut/gauche du rectangle de sélection
souhaité) MAINTENIR le clic, déplacer la souris vers le point
bas/droite souhaité, et relacher.
Picture2 va contenir la zone sélectionné dans picture1.
Note:
Il faut un peu plus de code si on veut empécher les effets
possibles de déformation introduits par les proportions possiblement
différentes de la sélection et des proportions du picture de
destination Quelques règles de 3 et le tour est joué :-)

<code>




Avatar
mg
Mon probleme consiste a sauvegarder l'image recadrer en picture2.

avec SavePicture Picture1.Picture, "c:test.jpg"
sauvehgarde l'image d'origine, alors que je connais pas la valeur de
l'argument de la propriété savePicture car picture1.Picture=0, d'ou une
erreur sur SavePicture.

Merci d'avance.

"François Picalausa" a écrit dans le message de news:

Hello,

Pour l'enregistrement et la lecture d'image, il te faudra des boites de
dialogue.
Tu peux voir sur la FAQ cet exemple:
http://faq.vb.free.fr/index.php?question

Le chargement de l'image s'effectuera à l'aide de LoadPicture,
l'enregistrement avec SavePicture, et des propriétés Picture et Image des
deux contrôles.

Pour voir la zone de travail, tu peux, par exemple, employer un contrôle
shape rectangulaire qui sera redimensionné de manière adéquate, lors de
mousemove.

Voici un exemple, sur base du code de Jean-Marc, qui illustre l'emploi


d'un
contrôle shape supplémentaire pour afficher la zone de recadrage:
Option Explicit

Dim x1 As Single
Dim Y1 As Single
Dim x2 As Single
Dim y2 As Single

Private Sub Form_Load()
Shape1.Visible = False
End Sub

Private Sub picture1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
x1 = X
Y1 = Y

With Shape1
.Left = X + Picture1.Left
.Top = Y + Picture1.Top
.Width = 1
.Height = 1
.Visible = True
End With
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
x2 = X
y2 = Y

With Shape1
'Le +1 est présent pour éviter width =0
'abs, pour éviter une width < 0
'Je laisse le soin aux utilisateurs de cet exemple
'de modifier cet immonde bidouillage
.Width = Abs(x1 - x2) + 1
.Height = Abs(Y1 - y2) + 1
End With
End Sub

Private Sub picture1_MouseUp(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
x2 = X
y2 = Y

Shape1.Visible = False

Picture2.PaintPicture Picture1.Picture, 0, 0, Picture2.Width, _
Picture2.Height, x1, Y1, x2 - x1, y2 - Y1
End Sub

--
François Picalausa

"mg" a écrit dans le message de news:
4257a299$0$25042$
> ça marcher bien ta solution Jean-Marc, sauf que :
> - Je souhaite récuperer l'image cadrer dans un fichier que je peut
> enregistrer sur le disque
> - Pouvoir voir ce que je cadre.
>
> "Jean-Marc" a écrit dans le message
> de news: 4257952a$0$1413$
>> Hello,
>> voici un mini exemmple qui implémente la solution de Fraçois:
>> Il faut: une form, 2 picturesbox, mettre une image dans picture1
>> Cliquer dans picture1 (point haut/gauche du rectangle de sélection
>> souhaité) MAINTENIR le clic, déplacer la souris vers le point
>> bas/droite souhaité, et relacher.
>> Picture2 va contenir la zone sélectionné dans picture1.
>> Note:
>> Il faut un peu plus de code si on veut empécher les effets
>> possibles de déformation introduits par les proportions possiblement
>> différentes de la sélection et des proportions du picture de
>> destination Quelques règles de 3 et le tour est joué :-)
>>
>> <code>




Avatar
Jean-Marc
Merci François! J'avais eu la flemme de faire le shape :-)

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."

"François Picalausa" a écrit dans le message de
news:
Hello,

Pour l'enregistrement et la lecture d'image, il te faudra des boites de
dialogue.
Tu peux voir sur la FAQ cet exemple:
http://faq.vb.free.fr/index.php?question

Le chargement de l'image s'effectuera à l'aide de LoadPicture,
l'enregistrement avec SavePicture, et des propriétés Picture et Image des
deux contrôles.

Pour voir la zone de travail, tu peux, par exemple, employer un contrôle
shape rectangulaire qui sera redimensionné de manière adéquate, lors de
mousemove.

Voici un exemple, sur base du code de Jean-Marc, qui illustre l'emploi


d'un
contrôle shape supplémentaire pour afficher la zone de recadrage:
Option Explicit

Dim x1 As Single
Dim Y1 As Single
Dim x2 As Single
Dim y2 As Single

Private Sub Form_Load()
Shape1.Visible = False
End Sub

Private Sub picture1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
x1 = X
Y1 = Y

With Shape1
.Left = X + Picture1.Left
.Top = Y + Picture1.Top
.Width = 1
.Height = 1
.Visible = True
End With
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
x2 = X
y2 = Y

With Shape1
'Le +1 est présent pour éviter width =0
'abs, pour éviter une width < 0
'Je laisse le soin aux utilisateurs de cet exemple
'de modifier cet immonde bidouillage
.Width = Abs(x1 - x2) + 1
.Height = Abs(Y1 - y2) + 1
End With
End Sub

Private Sub picture1_MouseUp(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
x2 = X
y2 = Y

Shape1.Visible = False

Picture2.PaintPicture Picture1.Picture, 0, 0, Picture2.Width, _
Picture2.Height, x1, Y1, x2 - x1, y2 - Y1
End Sub

--
François Picalausa

"mg" a écrit dans le message de news:
4257a299$0$25042$
> ça marcher bien ta solution Jean-Marc, sauf que :
> - Je souhaite récuperer l'image cadrer dans un fichier que je peut
> enregistrer sur le disque
> - Pouvoir voir ce que je cadre.
>
> "Jean-Marc" a écrit dans le message
> de news: 4257952a$0$1413$
>> Hello,
>> voici un mini exemmple qui implémente la solution de Fraçois:
>> Il faut: une form, 2 picturesbox, mettre une image dans picture1
>> Cliquer dans picture1 (point haut/gauche du rectangle de sélection
>> souhaité) MAINTENIR le clic, déplacer la souris vers le point
>> bas/droite souhaité, et relacher.
>> Picture2 va contenir la zone sélectionné dans picture1.
>> Note:
>> Il faut un peu plus de code si on veut empécher les effets
>> possibles de déformation introduits par les proportions possiblement
>> différentes de la sélection et des proportions du picture de
>> destination Quelques règles de 3 et le tour est joué :-)
>>
>> <code>




Avatar
François Picalausa
Hello,

L'image désignée par la propriété picture est celle de fond.
Ce qui est tracé est conservé dans la propriété image.
Ainsi
SavePicture Picture2.Image, "c:test.jpg"
devrait fonctionner.
Il faut juste faire attention au format d'image, je n'ai pas revérifié, mais
il me semble que VB enregistre en bmp, par défaut...

--
François Picalausa

"mg" a écrit dans le message de news:
4257add5$0$3105$
Mon probleme consiste a sauvegarder l'image recadrer en picture2.

avec SavePicture Picture1.Picture, "c:test.jpg"
sauvehgarde l'image d'origine, alors que je connais pas la valeur de
l'argument de la propriété savePicture car picture1.Picture=0, d'ou
une erreur sur SavePicture.

Merci d'avance.

"François Picalausa" a écrit dans le message de
news:

Le chargement de l'image s'effectuera à l'aide de LoadPicture,
l'enregistrement avec SavePicture, et des propriétés Picture et
Image des deux contrôles.




Avatar
mg
Merci de ton code, mais mon probleme reside du fait que j'arrive pas a
eregsitrer la nouvelle image recadrer das le picture2.

Merci d'avance

"mg" a écrit :

Bonjour,

je souhaite à partir d'une application Vb, pouvoir cadrer une image .
Merci de votre aide.






1 2