.NET C#/C++/VB: large image loading
.NET C#/C++/VB: large image loading
RealWorld Graphics logo    
Not logged in.  
IndexSoftwareGraphicsArticlesDiscussMore...

Login/Register
Forum List
Announcements
Icons and Cursors
Images
3D graphics
Win32 C/C++/VB
.NET C#/C++/VB
Tips and tricks
General discussion
User List
Search this site using Google

Free newsletter
Your email address:

Is the speed of this web adequate?

Back to forum .NET C#/C++/VB

large image loading

image 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 Reply

Please login or register before posting.

Message text:


Back to forum .NET C#/C++/VB

Copyright © 2005-2007 RealWorld Graphics. Contact: info@rw-designer.com.