conservation définition d'image
j'utilise delphi6.Pour préparer une randonnée je scanne un morceau de carte(en format A4) et avec un logiciel de mon cru je mesure la distance et trace en surcharge (sur le bitmap hors écran) le trajet puis j'enregistre ce bitmap avec l'extension bmp( comme le fichier de départ) .A partir de cet enregistrement je peux avec tous les logiciels d'ouverture d'image imprimer cette image qui a la même échelle que l'original (1/25000).
Voulant placer quelques indications et repères sur cette carte, j'ai eu l'idée de placer une bande blanche tout autour pour y mettre ces indications.Tout est fait sur le bitmap hors écran. et j'enregistre avec l'extension bmp (ou jpg).
Alors certains logiciels d'ouverture d'image ne veulent pas ouvrir ccle fichier enregistré pour l'imprimer et ceux qui l'ouvrent le font avec une échelle différente,en fait avec une résolution de 72 pi/p(celle de l'écran),et il est très difficile de reveniraux dimensions initiales de la carte.
conservation définition d'image
Citation:
Envoyé par
Montor
pas tout compris mais pense au Pixel format avant d'enregistrer
Code:
PixelFormat:=pf24bit;
jajouté cette condition pour les 2 bitmaps créés mais il n'y a aucun changement
conservation définition d'image
Citation:
Envoyé par
fansept
merci pour ces nouveaux conseils.
L'information de résolution doit effectivement être mise à 0 car si je demande
l'information biXpelsPermeter pour le bit map enregistré j'obtiens 0.
Pour la première solution proposée, je ne vois pas du tout ce qu'il faut faire.
Comment procéder pour ouvrir un fichier en binaire? Là je crois que je suis complètement dépassé.
J'ai partiellement résolu le pb.
pour la mesure des distances j'ai du calculer, d'après un click sur 2 points distants d'1 km, le nombre de pi représentant 1 km sur l'écran, donc sur le bitmap.
d'autre part sur l'imprimante , 1 km doit faire 4 cm, d'où la possibilité de calculer le nombre de pi pour 1 km sur l'imprimante. On peut alors obtenir un coef de réduction pour dessiner le bitmap dans le canvas de l'imprimante.
Ceci fonctionne avec l'imprimante connectée au pc utilisé avec delphi.
Si j'utilise l'exe avec un autre Pc, je n'imprime qu'une partie ou une image très petite!
conservation définition d'image
Citation:
Envoyé par
Jipété
Salut.
Oui, ça semble normal, puisque tu es en train de figer ton programme avec des valeurs en dur calculées depuis
ta machine, qui utilise
ton imprimante ! Ailleurs ça sera différent, et donc ça va partir en vrille...
Exactement ce qu'il ne faut pas faire !
Franck t'a mis sur la piste, je complète en te donnant ça, depuis l'excellent
site d'efg (malheureusement de + en + out-of-date, les liens mourant les uns après les autres pour cause de réorganisation des sites concernés, je pense... :cry:) :
Cete fois c'est résolu!
Le logiciel est produit sur un PC avec W98 connecté à l'imprimante A.
Le fichier exe fonctionne sur tout autre PC mais créait des ennuis lors de l'impression .Je me suis aperçu que dnas la procédure d'impression où j'utilisais 'GetDevice ....' pour limprimante je ne pouvais faire qu'un calcul à partir de cette valeur,la 2° fois que je l'utilisais cette valeur était 0.
Donc dans une procédure pour préparer l'impression je stocke cette valeur dans un Edit et ainsi dans la procédure d'impression je peux l'utiliser plusieurs fois.
Evidemment il faut que l'imprimante qui sera utilisée soit l'imprimante par défaut;
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| procedure prépa
............
h:=Printer.Handle;
Edit7.text:=IntToStr(getDeviceCaps(h,HORZRES));
Edit8.Text:=IntToStr(GetDeviceCaps(hVERTRES));
PrintDialog1.Execute;
end;
procedure impression
.............................
//valeur du km en pi sur l'imprimante
imppikm:=5StrToint(Edit7.Text)/GetDeviceCaps(h,HORZSIZE))*40;
//coefficient pour réduire les dimensions de la carte à 40 mm par km
//le nombre de pi par km sur l'écran a été gardé dans Edïkm
cof:=imppikm/StrToFloat(Edpikm.Text);
bmpimp.loadfromFile('C:\.............);
//d'où les dimensions du bit map à dessiner dans le Canvas de l'imprimante
Trunc(bmpimp.height*cof)
Trunc(bmpimp.Width*cof) |