Paramétrer selon le mode portrait ou paysage ?
Je m'en charge facilement ...(puisque je peux déterrminer facilement les dimensions en pixels et donc savoir si c'est plus large que haut ou le contraire)
Mais dis-moi, tes chiffres, ils sont bien en pixels ? Et il s'agit bien là de l'épaisseur de tes bordures (car ça fait ben beaucoup, pour une épaisseur !!!... qui prendrait presque tout ton écran !!!)
et tu as écrit plus haut :
Paramétrer autrement est également possible, mais il faudrait utiliser un tremplin qui alourdirait... mais c'est possible, oui...Je connais la largeur des marges noires, que ce soit proportionnellement à l'image (%) ou en pixels, en hauteur ou en largeur.
Tu dis ...
Edit : je peux par exemple voir (en analysant) que ton image avant1.jpg mesure 94 pixels par 77 pixels, que ses bordures latérales ont une épaisseur de 19 pixels et qu'elle possède des bordures haute et basse de 1 pixel...
Je peux également te dire que ces bordures ne sont pas parfaitement noires ( <> RGB(0,0,0) )
Ce que (si tu avais encore VB6), tu pourrais constater toi-même.
Voilà le code Vb6 que j'utilise pour traiter avant1.jpg (il va de soi que oterh et oterl sont les marges trouvées pour cette image).
Scalemode de Me et de Picture1 en pixels - Autoredraw de Picture1 à True
C'est oterh et oterl que j'attends de toi, en fonction de "paysage" ou "portrait" ... (soit en valeur absolue, soit en valeur relative, comme tu préfères).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Option Explicit Private Sub Form_Load() Me.Hide Dim lWidth&, lHeight& Call GetPicSize(Me, App.Path & "\avant1.jpg", lWidth, lHeight, vbPixels) MsgBox lWidth & " x " & lHeight ' tu as là les dimensions Unload Me End Sub Sub GetPicSize(Frm As Form, sPath As String, ByRef lWidth As Long, ByRef lHeight As Long, Optional iScale As Integer = vbTwips) Dim ObjStd As New StdPicture, oterl As Integer, oterh As Integer oterh = 1 'c'est la l'épaisseur de tes marges en haut et en bas oterl = 19 ' et là celle de tes marges latérales Set ObjStd = LoadPicture(sPath) lWidth = Me.ScaleX(ObjStd.Width, vbHimetric, iScale) lHeight = Me.ScaleY(ObjStd.Height, vbHimetric, iScale) Picture1.Move 0, 0, lWidth - oterl - oterl, lHeight - oterh - oterh Picture1.PaintPicture ObjStd, 0, 0, Picture1.Width, Picture1.Height, oterl, oterh, lWidth - oterl - oterl, lHeight - oterh SavePicture Picture1.Image, App.Path & "\apres1.bmp" Set ObjStd = Nothing End Sub
tu trouveras dans le zip joint tes deux images avant1.jpg et apres1.bmp
(traitement encode grossier à ce stade, mais déjà probant)
Partager