bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 2019
-
6 juin 2007 à 17:52
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 2019
-
28 nov. 2012 à 14:35
Bonjour,
J'ai déjà posé une question similaire il y a quelques mois mais les réponses ne convenaient pas et je n'ai à ce jour trouvé aucune réponse sur Internet malgré mes nombreuses recherches.
J'explique mon problème :
J'utilise l'interface TWAIN pour acquérir des images avec le code (simplifié) ci-dessous :
'Selection de la source
r = TWAIN_SelectImageSource(Me.hWnd)
'Lancement du scan
r = TWAIN_AcquireToClipboard(Me.hWnd, 0)
'Recupération de l'image
Set imgPreview.Picture = Clipboard.GetData(vbCFDIB)
Le problème est que je n'arrive pas à récupérer la résolution de l'image qui vient d'être scannée.
Sachant que lorsque je demande à imgPreview la résolution de l'image qu'il affiche, j'obtiens 96DPI soit la résolution de l'écran.
- Peut-on récupérer la résolution dans le vbCFDIB ?
- Peut-on récupérer la résolution utilisée dans l'interface TWAIN ?
- Existe-il un controle autre que Image ou PictureBox et qui conserve la résolution de l'image au lieu de convertir en 96DPI ?
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 6 juin 2007 à 18:58
Salut,
96 dpi c'est bien la résolution par défaut sur l'écran (pour l'imprimant c'est 72 dpi)
"je demande à imgPreview la résolution de l'image"
c'est quoi imgPreview et comment as tu fait pour demander la résolution ?
de toute façon se sera toujours 96 dpi (bien que chaque écran a sa propre résolution en fonction de sa taille)
pour avoir la taille de l'image et si imgPreview est un PictureBox::
voit du côté de imgPreview.Picture.Width et imgPreview.Picture.Height
mais faudra convertir du vbHimetric en vbPixels
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 6 juin 2007 à 21:25
Salut Gobillot,
Merci pour ton intervention.
En fait, imgPreview.Picture.Width et imgPreview.Picture.Height me donne la 'taille' de l'image et non sa 'résolution' (en PPP).
Ce qu'il me faut c'est la résolution exprimée en PPP ou DPI (celle qui a été selectionnée dans l'interface TWAIN).
<hr />
"c'est quoi imgPreview et comment as tu fait pour demander la résolution ?"
<hr />
imgPreview est de type Image (j'ai également essayé une PictureBox mais sans succès)
Sinon, pour récupérer cette résolution, j'utilise une API de GDI+ mais sans succès car j'obtiens 96 en résultat.
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 6 juin 2007 à 21:51
Re,
ok, si l'API dit que la résolution est 96 ppp c'est qu'elle est bien de 96, si je vérifie en passant par les propriétés de l'explorer, la plupart de mes images sont en 96, sauf quelques unes
en fait c'est faux, 96 ppp est par défaut, si la résolution dans l'image est à zéro, la résolution sera considérée comme étant à 96 par défaut, je dis bien sur l'écran parce que Windows considère que la résolution d'un écran est à 96, ce qui n'est pas vrai car chaque écran a sa propre résolution (la mienne est par exemple de de 86x86)
mais cela ne joue absolument pas, quelle que soit la résolution de l'image, elle sera affichée de la même façon sur l'écran, les pixels restant les mêmes.
pour l'imprimante c'est une autre histoire, elle sera considérée par défaut à 72 dpi, et ça joue sur la taille de l'image imprimée.
cette résolution se trouve dans le fichier au même titre que la taille, mais pas au même endroit, et de façon différente suivant le format (bmp, jpg, png, ...) et souvent elle se trouve à zéro, ce qui doit être ton cas je pense, et que ça doit jouer que sur la taille de ton image qui doit être plus ou moins grande suivant la résolution du scanner mais qui ensuite reste pareille (c'est pas clair ? l'image est plus grande mais reste à 96 ppp)
on peut changer la résolution d'une image, il suffit de savoir où elle se trouve dans le fichier, et avant d'imprimer, une petite modif du fichier et on peut avoir l'image imprimée avec la taille exacte que l'on veut, c'est le seul cas qui justifie la modif (sinon je vois pas)
Daniel
Vous n’avez pas trouvé la réponse que vous recherchez ?
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 6 juin 2007 à 22:03
ReRe,
Merci pour ces précisions. Tu es dans le juste, je souhaite imprimer les images scannées, non pas sur une imprimante mais dans un fichier, mais cela revient au même, l'image doit conserver sa taille d'origine.
J'ai effectivement pensé à utiliser l'API de GDI+ qui me permet de modifier la résolution d'une image, mais le problème reste entier : avant d'attribuer une valeur, il faut que je connaisse cette valeur
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 6 juin 2007 à 22:15
je peux te dire pour un fichier bmp
en le bidouillant directement en binaire
en position 26 et 2A (en hexa en commençant à zéro) sur 4 caractère en Long
26 80 0C 00 00 ' résolution X
2A 80 0C 00 00 ' résolution Y
valeur Long &HC80 --> 3200 pixels par mètre soit 32*2..54 81 dpi
avec ça on connait la taille de l'image imprimée (672 pixels / 32 --> 21 cm juste pour un format A4)
bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 6 juin 2007 à 22:24
Hum,
Malheureusement cela ne conviendra pas, je sais également récupérer la résolution d'un BMP. Le problème est que je n'en ai pas. Ou bien je peux en avoir un en faisant en truc du genre imgPreview.SavePicture(.....) mais l'image est alors enregistrée avec une réso de 96DPI
Il faut vraiment que j'intervienne plus en amont.
Sinon, j'ai également pensé à utiliser autre chose que TWAIN, tant que cela reste simple pour l'utilisateur, que c'est gratuit d'utilisation et que cela ne me demande pas 3000 lignes de code derrière. Mais je n'ai rien trouver de ce genre donc je suis revenu au standard TWAIN.
Plus de 3 mois que je suis sur ce problème, commence à faire long
Mais je ne perd pas espoir.