Bonjour,
Je manipule des images PNG (plan de sites), en dessinant dessus différentes figures (bâtiments, etc).
Pour les PNG, j'utilise l'unité pngimage.hpp fournie avec Borland C++ Builder 6.
Je travaille uniquement avec des TBitmap, en traçant sur leur Canvas avec LineTo, Ellipse, Rectangle etc..., et j'utilise la fonction suivante pour charger un PNG de base :
Le problème survient lorsque j'utilise des png d'une certaine taille (supérieures à 3000*3000 pixels). Sur certains postes disposant de suffisamment de mémoire vive, cela fonctionne, sur d'autres, bmp->Width me retourne "0" à l'issue de la fonction ci-dessus, car le png n'a pas pu être chargé en mémoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 TBitmap *bmp = new TBitmap(); bmp->PixelFormat = pf24bit; TPNGObject *png = new TPNGObject(); png->LoadFromFile("fichier.png"); bmp->Assign(png); delete png;
Y'a-t'il un moyen de contourner ce problème ? J'ai essayé de paramétrer les valeurs de "pile" dans les options du compilateur, mais ça n'a rien changé.
Je comprends que cela soit gros en mémoire lorsqu'on manipule un bitmap d'une certaine taille... Sinon, n'y a-t'il pas moyen d'utiliser directement des PNG (qui sont bcp moins lourds en espace mémoire, de l'ordre de 2 Mo pour une image de 4000x4000 pixels) ?
En vous remerciant par avance !
Partager