|
|
 |
|
 |
|
Back to forum .NET C#/C++/VB
large image loadingimage loading
2008-03-31Author: <unknown> 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
|
2008-03-31Author: Vlasta 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.
|
2008-03-31Author: <unknown> 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.
|
2008-03-31Author: <unknown> 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;
}
|
Post ReplyPlease login or register before posting.
Back to forum .NET C#/C++/VB
|
|
 |
|
 |
|