Hi
I want to show a large image in C#,but I recieve Out of memory error.
how can I read the smaller block of my picture and show it.I work with GDI .
here is my code .I try to load one part of my picture but at last line of my code I recieve this error.my image is 20MB jpg with 12000*14000
Image MapImage = null;
MapImage1 = Image.FromFile("filename.jpg");
Rectangle recDes1 = new Rectangle(0, 0, 1000, 1000);
Rectangle recSrc1 = new Rectangle(0, 0, 1000, 1000);
gr.DrawImage(MapImage1, recDes1, recSrc1, GraphicsUnit.Pixel);
by regards
Hm, the unpacked image would require more than 0.5 GB of memory. Given the inefficiency of managed code I am not wondering you are getting these memory errors. I doubt GDI+ would be able to read only a part of the image, it is a rather special request. Maybe a some specialized imaging library would help. Or try 64bit environment if it is possible.
hi
the second line of top code was loaded into memory and I use this code to refrence each slice of picture to one bitmap object.and with this sharing of memory to some bitmap object I can show this picture.but I dont want to use .5GB of my memory.
img1= Image.FromFile("filename.jpg");
for (int f = 1; f <= 6; f )
{
ColSelect = 0;
for (int ff = 1; ff <= 6;ff )
{
imgcount ;
bmpData = img1.LockBits(new Rectangle(ColSelect, RowSelect, WidthPerCol, HeightPerRow),ImageLockMode.ReadWrite ,img1.PixelFormat );
ptr[f-1,ff-1] = bmpData.Scan0;
strd[f-1,ff-1]=bmpData.Stride;
img1.UnlockBits(bmpData);
img2[f - 1, ff - 1] = new Bitmap(WidthPerCol,HeightPerRow,strd[f-1,ff-1] ,img1.PixelFormat ,ptr[f-1,ff-1]);
ColSelect = WidthPerCol;
}
RowSelect = HeightPerRow;
}
Find out how Vista icons differ from XP icons.
See how RealWorld Icon Editor handles Vista icons.