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

Signaler
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014
-
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
-
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

Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 179 internautes nous ont dit merci ce mois-ci

Messages postés
173
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
30 janvier 2009

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
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014

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
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
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
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014

sorry trop compliqué pour moi. Tu peux m'expliquer stp plus. merci d'avance

jyd
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
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
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
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
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014

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
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014

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
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
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
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014

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
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
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
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
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