Witam.
Mam problem z wczytywaniem dużych obrazków. Sporo czytałem na ten temat i problem wydaje się skomplikowany.
Być może ktoś z forum jest w stanie mi jakoś pomóc?
Problem polega na tym, iż program wyświetla podczas otwierania dużych obrazków (np: 5000x5000) błąd o treści takiej:
"W magazynie brak miejsca dla wykonania tego polecenia". Wnioskuję, iż to z powodu braku miejsca w pamięci, ale tak nie jest w rzeczywistości.
Oto w jaki sposób wczytuję obrazek:
TOleGraphic *Grafik = new TOleGraphic();
TFileStream *fs = new TFileStream("D:\\folder\\a.jpg", fmOpenRead);
Graphics::TBitmap *BMP = new Graphics::TBitmap();
Grafik->LoadFromStream(fs);
delete fs;
BMP->Height = Grafik->Height;
BMP->Width = Grafik->Width;
BMP->Canvas->Draw(0, 0, Grafik);
delete Grafik;
Image1->Picture->Bitmap = BMP;
delete BMP;
Albo w taki sposób:
Graphics::TBitmap *BMP = new Graphics::TBitmap();
TJPEGImage *JPG = new TJPEGImage();
JPG->LoadFromFile("G:\\folder\\a.jpg");
BMP->Width = JPG->Width;
BMP->Height = JPG->Height;
BMP->Canvas->Draw(0, 0, JPG);
Image1->Picture->Bitmap = BMP;
BMP->Free();
JPG->Free();
Zauważyłem, że problem pojawia się w momencie ustalania rozmiaru bmp czyli tutaj:
BMP->Height = Grafik->Height;
BMP->Width = Grafik->Width;
Ale to jest wymagane, by obrazek wczytać do TImage.
Ma ktoś może jakiś pomysł w jaki sposób to obejść?