Chargement partiel d'une BMP en mémoire

cs_Tropic Messages postés 90 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 1 février 2011 - 13 juil. 2007 à 09:29
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 13 juil. 2007 à 14:41
Salut à tous !!

J'ai une image de plus de 200Mo (oui)
C'est un plan IGN 1:10000 que j'ai reconstitué pour un projet GPS
un LoadPicture ne sufit pas, image trop lourd et je ne veux pas la découper
J'aurai voulu pouvoir récupérer un cadre image directement dans le fichier
en lui donnant le X,Y,Largeur,Hauteur

Ce topic ne correspond pas
http://www.vbfrance.com/infomsg_CHARGEMENT-PARTIEL-BMP-DANS-PICTUREBOX_280323.aspx

Si vous avez une idée ou un bout de code
MERCI

15 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 juil. 2007 à 09:34
"que j'ai reconstitué"
pourquoi n'en faire qu'une seule image ?

tes 200Mo iront en mémoire, ca risque de pas être simple :p
a tester la capaciter d'une dll en C a te faire le boulot rapidement...
c'est a dire te refiler juste un morceau de ta carte, juste le morceau a afficher.

a voir s'il n'est pas possible d'aller 'piocher' dans ton fichier, juste là où il faut, mais j'ai des doutes
0
cs_Tropic Messages postés 90 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 1 février 2011
13 juil. 2007 à 10:02
Renfield -pourquoi n'en faire qu'une seule image ?

Pour avoir une fluidité à l'affichage

On peut utiliser OleLoadPicture avec un tableau de Byte
Mon image sera surement en JPEG(mais rien n'esr décidé), BMP est exclus
sinon mon image passe à plus de 2Go.
Le type d'image va dépendre de la formule pour récuper un tableau (Bits(0...))
de X,Y,Largeur,Hauteur
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 juil. 2007 à 10:08
fluidité d'affichage ?

je ne vois pas le rapport....
découper ton image en morceau de taille raisonnable ferait en pâtir les perf de ton programme ? allons dont ! tu n'es pas sérieux ^^

pourquoi ne pas stocker ta bmp dans un format qui te conviendrait, plus simple a découper pour toi, plutot que de fonder le choix du format de fichier JPG/BMP
0
cs_Tropic Messages postés 90 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 1 février 2011
13 juil. 2007 à 10:13
Rdenfiel -fluidité d'affichage ?
Non!, je ne me fais pas comprendre ;-)

En fais, l'image vas se déplacer en fonction des coordonnés GPS
donc à l'écran, je n'aurai que la partis qui m'intéresse.
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 juil. 2007 à 10:19
oui, j'imagine bien la chose, mais où est la necessité de stocker l'image en intégralité ?

tu peux très bien faire un beau découpage, l'utilisateur n'y verra strictement rien... (API BitBlt, par exemple)
0
cs_Tropic Messages postés 90 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 1 février 2011
13 juil. 2007 à 10:29
Pour la portabilité du projet, il vaut mieux une image que X images.
Puisque par rapport au point geographique, je peut retrouver X,Y de l'image,
mais s'il est dans plusieurs fichiers la je ne vois pas.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 juil. 2007 à 10:45
portabilité ?

...

image des images coupées de 10 sur 10, formant un tableau d'images de 2 images sur 4

et une portion visible de 10 sur 10 également (par exemple)

ben si tu veux afficher la zone centrée sur 10;20
tu devras afficher 4 images :

- 5;15 10;20
- 10;15 15;20
- 5;20 10;25
- 10;20 15;25

(dessine un quadrillage sur une feuille pour visualiser...)

pour un centre a;b qui vaut 10;20, donc
on a une zone x;y z;t
qui vaut

5;15 15;25

x mod 10 ne vaut pas 0 donc, tu devra utiliser deux images en horizontal
y mod 10 ne vaut pas 0 donc, tu devra utiliser deux images en vertical

donc quatres images en tout

x \ 10 te donnera l'indice en x pour retrouver la bonne picture
y \ 10 te donnera l'indice en y de cette même image...

dessine, fais des tests, c'est pas si complexe.
au maximum 4 images en mémoire simultanément, qui prennent au maximum 4 fois la surface affichable... donc ce sera rapide.

x \ 10 te donne 0 tu prend donc l'image d'indice 0
0
cs_Tropic Messages postés 90 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 1 février 2011
13 juil. 2007 à 11:09
Merci Renfield ton idée est bonne mais je ne peux accepté la réponse.
Un dessin vaut mieu q'un discourt

Mon point GPS sera toujours centré Dans A

A Zone d'affichage
B Image
+ Point GPS

Situation idéal dans ton idée

*************** B
* *
* .------.A *
* | | *
* | + | *
* | | *
* .------. *
* *
* *
* *
***************

Là il faut retrouver les 2 bonnes images
.------.A
***************
* | + | *
* | | *
* .------. *
* *
* *
* *
* *
***************


Mais là j'en sort plus
.------.A
| **************
| * + | *
| * | *
.------. *
* *
* *
* *
* *
**************
0
cs_Tropic Messages postés 90 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 1 février 2011
13 juil. 2007 à 11:11
Ah, le resultat du dessin est moin
Il ma coupé les espaces
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 juil. 2007 à 11:33
simples calculs du même accabi...

image1:
x \ 10 ; y \ 10

image2:
x \ 10 +1; y \ 10

image3:
x \ 10 ; y \ 10 +1

image4:
x \ 10 +1 ; y \ 10 +1



bien sur, ce que je t'ai donné c'est un principe, pas du code tout pret :p
0
cs_Tropic Messages postés 90 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 1 février 2011
13 juil. 2007 à 11:39
Je vais etudier tous ça
Merci
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
13 juil. 2007 à 12:34
Salut,

Je suis comme Renfield : pour la découpe !
Mais c'est vrai que ça te demanderais pas mal de code... Encore que pas tant que ça si tu permet pas de zoomer.

Regarde peut être du côté du format ecw. Mais en VB6...
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
13 juil. 2007 à 12:57
Y a un utilitaire qui s'appel IrfanView qui permet gère les ecw et qui permet de faire des recadrage en invite de commande.

Genre un shell de i_view32.exe c:\MaCarte.ecw /crop=(10,10,300,300) /convert=d:\temp\Picture.png

Ca doit sortir un rectangle de l'image, si j'ai bien compris crop...   (Une aide conséqente est fournie avec le logiciel)

Ensuite, y a plus qu'à charger la png dans ta PictureBox

Mais bon, y a mieux côté perf...
0
cs_Tropic Messages postés 90 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 1 février 2011
13 juil. 2007 à 14:06
l'incovénient avec la méthode de Renfield, si je change de carte, je suis obligé de tous refaire au niveau de l'image.
Parcequ'il ne faut pas oblier que la carte est à l'échelle pour retrouver les coordonnés

En fait c'est cette source qui m'a inspiré
http://www.vbfrance.com/codes/AFFICHAGE-COORDONNEES-GPS-SUR-CARTE_36890.aspx
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 juil. 2007 à 14:41
tout refaire au niveau de l'image ?

non, tu dois pouvoir inserer par ci par là des coefficient indiquant l'echelle
0
Rejoignez-nous