Réduction d'une image importée d'un fichier BMP

Résolu
jytest Messages postés 314 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 22 décembre 2014 - 16 déc. 2005 à 01:08
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 19 déc. 2005 à 22:45
Je suis néophyte en VB

J'utilise les instructions suivantes :
Dim posX as double, posY as Double
Printer.PaintPicture _
LoadPicture("Logo.bmp"), posX, posY
avec posX et posY étant les coordonnées horizontales et verticales sur la page d'impression.

pour info, ce logo créé en photoshop a une taille de 20cm x 5cm.

Comment faire pour l'imprimer en fonction d'une contrainte bien précise, comme la taille de la nouvelle hauteur désirée (par exemple 2cm, au lieu des 5cm d'hauteur de base de l'image)

Merci d'avance à la bonne âme qui me solutionnera ce prob.
jyd

13 réponses

jytest Messages postés 314 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 22 décembre 2014
19 déc. 2005 à 22:36
Merci de toute ton aide.
Grace à toi, je peux terminer mes impressions de logos
Encore merci pour ton aide TRES précieuse
Super

jyd
3
pseudoOM Messages postés 173 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 30 janvier 2009 1
16 déc. 2005 à 14:22
Dans les propriétés de PaintPicture tu retrouves ceci :
picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode
La syntaxe de la méthode PaintPicture comprend les éléments suivants :


Élément,
Description,
----

object,
Facultatif.
<OBJECT id=alink_5 classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 type=application/x-oleobject></OBJECT>Expression d'objet qui prend la valeur d'un objet figurant dans la rubrique Application. Si l'élément object est omis, l'objet Form qui a le
<OBJECT id=alink_6 classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 type=application/x-oleobject></OBJECT>focus est considéré comme object.,
----

picture,
Source du graphique à dessiner sur object. Doit correspondre à la propriété Picture d'un objet Form ou PictureBox.,
----

x1, y1,
Valeurs en simple précision indiquant les coordonnées de destination (axes x et y) sur l'élément object pour l'argument picture à dessiner. La propriété ScaleMode de l'élément object détermine l'unité de mesure à utiliser.,
----

width1,
Facultatif. Valeur en simple précision indiquant la largeur de destination de picture. La propriété ScaleMode de l'élément object détermine l'unité de mesure à utiliser. Si la largeur de destination est supérieure ou inférieure à la largeur source (width2), l'argument picture est élargi ou rétréci en conséquence. Si cet élément est omis, la largeur source est utilisée.,
----

height1,
Facultatif. Valeur en simple précision indiquant la hauteur de destination de picture. La propriété ScaleMode de l'élément object détermine l'unité de mesure à utiliser. Si la hauteur de destination est supérieure ou inférieure à la hauteur source (height2), l'argument picture est élargi ou rétréci en conséquence. Si cet élément est omis, la hauteur source est utilisée.,
----

x2, y2,
Facultatif. Valeurs en simple précision indiquant les coordonnées (axes x et y) d'une zone de coupure à l'intérieur de l'argument picture. La propriété ScaleMode de object détermine l'unité de mesure à utiliser. Si cet élément est omis, la valeur par défaut est 0.,
----

width2,
Facultatif. Valeur en simple précision indiquant la largeur source d'une zone de coupure à l'intérieur de l'argument picture. La propriété ScaleMode de object détermine l'unité de mesure à utiliser. Si cet élément est omis, la totalité de la largeur source est utilisée.,
----

Heightt2,
Facultatif. Valeur en simple précision indiquant la hauteur source d'une zone de coupure à l'intérieur de l'argument picture. La propriété ScaleMode de object détermine l'unité de mesure à utiliser. Si cet élément est omis, la totalité de la hauteur source est utilisée.,
----

opcode,
Facultatif. Valeur de type Long ou code utilisé uniquement avec les
<OBJECT id=alink_7 classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11 type=application/x-oleobject></OBJECT>images bitmap. Définit une opération au niveau du bit (par exemple, la constante vbMergeCopy ou vbSrcAnd) qui est exécutée sur l'argument picture à mesure qu'il est dessiné sur object. La liste complète des opérateurs au niveau du bit figure dans la rubrique RasterOp, constantes de l'aide de Visual Basic.
Il existe des limitations à l'utilisation des opcodes. Par exemple, vous ne pouvez pas utiliser un opcode autre que vbSrcCopy si la source est une icône ou un métafichier, et les opcodes qui interagissent avec le motif (ou « brosse », en termes SDK) comme MERGECOPY, PATCOPY, PATPAINT et PATINVERT interagissent en fait avec la propriété FillStyle de la destination.

Note Opcode est utilisé pour passer une opération au niveau du bit sur un bitmap. Placer une valeur dans cet argument lors du passage d'autres types d'images cause une erreur « Argument ou appel de procédure incorrect ». Ceci est voulu. Pour éviter cette erreur, laissez l'argument Opcode à blanc pour toute autre image d'un bitmap.
en espérant que ça t'aides !

pseudoOM
0
jytest Messages postés 314 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 22 décembre 2014
16 déc. 2005 à 20:44
Je vais essayer.
Mais je n'y crois pas.
Après certains essais avec Photoshop, cela pourrait être un problème de définition en pixels, prioritaires apparemment, par rapport à la dimension en cm.
Serait-ce un réglage sous VB pour préciser ou les mesures en cm ou les mesures en pixels de l'image de base sous Photoshop...
Besoin d'aide
URGENT
jyd
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
16 déc. 2005 à 23:34
2 valeurs à changer dans le fichier BMP.











Private Type BITMAPINFOHEADER

biSize
As
Long

biWidth As Long

biHeight As Long

biPlanes As Integer

biBitCount As Integer

biCompression As Long

biSizeImage As Long

biXPelsPerMeter As Long

biYPelsPerMeter As Long

biClrUsed As Long

biClrImportant As Long

End Type





Dim X As Long

Dim Y As Long



nom = "C:\IMAGES\essai.bmp"

Open nom For Binary As #1

X = 3200 'valeur à déterminée

Put #1, 39, z

Y = 3200 'valeur à déterminée

Put #1, , z

Close #1

Daniel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jytest Messages postés 314 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 22 décembre 2014
18 déc. 2005 à 00:00
sorry trop compliqué pour moi. Tu peux m'expliquer stp plus. merci d'avance

jyd
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 déc. 2005 à 00:52
c'est un simple calcul



- si ton image fait 64 x 256 pixels

avec la valeur 3200

elle fera à l'impression 64/32 x 256/32 soit 2 cm x 8 cm



- si ton image fait 100 x 400 pixels

pour avoir la même taille à l'impression il faudra mettre 5000

100/50 x 400/50 soit toujours 2 cm x 8 cm



- tu peux jouer sur les deux dimensions:

pour qu'elle soit carré 8 cm x 8 cm

100/8 = 12,5 et 400/8=50



- j'ai corrigé le z au lieu de X et Y



nom = "C:\IMAGES\logo.bmp"

Open nom For Binary As #1

X = 1250

Put #1, 39, X

Y = 5000

Put #1, , Z

Close #1

Printer.PaintPicture LoadPicture(nom), posX, posY

Printer.EndDoc



si ça marche pas avec printer, tu l'imprimes directement avec photoshop

sinon pour supprimer la résolution, tu mets les 2 valeurs à zéro.






Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 déc. 2005 à 01:35
dis moi si je me trompe:

ton logo fait en gros 567 x 142 pixels

dans ce cas la valeur doit être de 7087

Daniel
0
jytest Messages postés 314 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 22 décembre 2014
18 déc. 2005 à 13:30
Désolé
Je suis débutant
Et je voudrais savoir pourquoi utiliser
Private Type BITMAPINFOHEADER
...
End Type

Z n'est-il pas à dimensionner?
Oui, ma photo fait bien plus que cela en pixels.
Elle a pourtant la taille de 4x2cm

Encore merci d'avance

jyd
0
jytest Messages postés 314 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 22 décembre 2014
18 déc. 2005 à 13:30
Désolé
Je suis débutant
Et je voudrais savoir pourquoi utiliser
Private Type BITMAPINFOHEADER
...
End Type

Z n'est-il pas à dimensionner?
Oui, ma photo fait bien plus que cela en pixels.
Elle a pourtant la taille de 4x2cm

Encore merci d'avance

jyd
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 déc. 2005 à 17:34
non BITMAPINFOHEADER n'est pas à déclarer si tu l'utilises pas,

c'était pour montrer comment est fait un fichier BMP

z n'est pas à déclarer non plus, c'est ce que j'utilisais avant, mais j'avais oublié de le modifier.

avec photoshop la résolution par défaut est de 72 dpi, j'avais donc
estimer la taille en pixels pour une image de 20cmx5cm, soit 20*72/2.54
x 5*72/2.54

Daniel
0
jytest Messages postés 314 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 22 décembre 2014
19 déc. 2005 à 21:38
je crois comprendre... en partie...
car dou piques tu tes 7087... 1250... 5000... 3200...
D'où viennent ces nombres très magiques ????
Merci de ton aide!
un néo qui apprécie ton aide!!!
jyd
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 déc. 2005 à 21:57
et si tu me donnais la taille de ton image en pixels,

et la taille en cm que tu veux avoir sur la feuille, je te ferais les calculs.



résulution = 100 * (taille image en pixels) / (taille sur la feuille en cm)

Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 déc. 2005 à 22:45
c'est bien d'accepter la réponse,

mais le principe c'est d'accepter la ou les réponse(s) de celui, ceux ou celle, celles qui l'ont apportée(s)



le principal c'est que ça t'a aidé.


Daniel
0
Rejoignez-nous