Re: How to convert image from Format1bppIndexed to Format24bppRgb?



The size of the image file has no bearing on the amount of memory you need
to represent that file internally. A JPEG image is compressed and when the
image is read and turned into a raster the memory requirements are well
known and fixed. The size of a 1bpp image is 24 times smaller than the
equivalent 24bpp image in memory.

If your file has 10,000 by 10,000 pixels that will require 3*10000*10000
bytes (300 million bytes). To store an Argb file would be 400 million bytes.

Given that your system might be using a considerable chunk of the 1 gig
available and the image might require 400 megs as well you're running fairly
close to the limits.

Paging of virtual memory is slow and not really designed for huge amounts of
memory that images require so that will further restrict the system.

You're correct in saying that the code looks fine. If the image were smaller
it'd work just fine. When the system says you're out of memory believe it.
It knows.

Add a bunch of 1 gb simms and things will be happier.

--
Bob Powell [MVP]
Visual C#, System.Drawing

Find great Windows Forms articles in Windows Forms Tips and Tricks
http://www.bobpowell.net/tipstricks.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/faqmain.htm

All new articles provide code in C# and VB.NET.
Subscribe to the RSS feeds provided and never miss a new article.





"JY" <blackcarrera@xxxxxxxxxxx> wrote in message
news:bc38f5ee.0504221152.4f7523d@xxxxxxxxxxxxxxxxxxxxx
> All of my images that are 24bppRgb are also about 41MB in size,
> 10000x10000 pixels are fine when I make calls to FromImage, DrawImage,
> etc. It's only when I try to convert the 1bpp to 24bppRbg that I run
> into the problem when I make calls to DrawImage (in the process of
> trying to convert pixel formats)...
>
> I also have 1GB RAM so I don't really think that I'm literally "Out of
> memory" (how did you calculate that I would need 128MB?)
>
> Any other ideas? My code looks ok?
>
> Thanks again for your help!!
>
> -------------------------------------------------------------------------------
> -------------------------------------------------------------------------------
> That suggests to me that it's a bit large then.. If the image was
> square
> it'd be 6556 pixels on a side. To make a 24 bit per pixel image you'd
> require 128 megabytes of memory.
>
> There is a possibility that the resulting image is indeed too large
> for the
> machine.
>
> --
> Bob Powell [MVP]
> Visual C#, System.Drawing
>
> Find great Windows Forms articles in Windows Forms Tips and Tricks
> http://www.bobpowell.net/tipstricks.htm
>
> Answer those GDI+ questions with the GDI+ FAQ
> http://www.bobpowell.net/faqmain.htm
>
> All new articles provide code in C# and VB.NET.
> Subscribe to the RSS feeds provided and never miss a new article.
>
>
>
>
>
> "JY" <blackcarrera@xxxxxxxxxxx> wrote in message
> news:bc38f5ee.0504220621.6e05e418@xxxxxxxxxxxxxxxxxxxxx
>> Thanks for your response Bob... The 1bpp mage is about 41MB
>>
>> "Bob Powell [MVP]" <bob@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
>> news:<uKzQARsRFHA.3560@xxxxxxxxxxxxxxxxxxxx>...
>>> How big is the 1bpp image?
>>>
>>> --
>>> Bob Powell [MVP]
>>> Visual C#, System.Drawing
>>>
>>> Find great Windows Forms articles in Windows Forms Tips and Tricks
>>> http://www.bobpowell.net/tipstricks.htm
>>>
>>> Answer those GDI+ questions with the GDI+ FAQ
>>> http://www.bobpowell.net/faqmain.htm
>>>
>>> All new articles provide code in C# and VB.NET.
>>> Subscribe to the RSS feeds provided and never miss a new article.
>>>
>>>
>>>
>>>
>>>
>>> "JY" <blackcarrera@xxxxxxxxxxx> wrote in message
>>> news:bc38f5ee.0504211045.101b6cc5@xxxxxxxxxxxxxxxxxxxxx
>>> > Hi,
>>> > I'm trying to convert an image with PixelFormat Format1bppIndexed
> to
>>> > Format24bppRgb. I keep getting the "Out of memory" message.
>>> >
>>> > Here's what I've tried:(
>>> >
>>> > (where bm.PixelFormat is Format1bppIndexed)
>>> > 1)
>>> > bm2 = New Bitmap(bm.Width, bm.Height, PixelFormat.Format24bppRgb)
>>> > g2 As Graphics = Graphics.FromImage(bm2)
>>> > g2.DrawImage(bm, subRect, 0, 0, bm.Width, bm.Height,
>>> > GraphicsUnit.Pixel)
>>> >
>>> > -> get "Out of memory"
>>> >
>>> > 2)
>>> > bm2 = bm.Clone(New Rectangle(0, 0, bm.Width, bm.Height),
>>> > PixelFormat.Format24bppRgb)
>>> >
>>> > -> the new bitmap bm2 is Format1bppIndexed, not Format24bppRgb
>>> >
>>> > Any ideas? I don't necessarily need the image to be
> Format24bppRgb - I
>>> > just need to be able to use the function "Graphics.FromImage" (so
> it
>>> > could be Format16bppRgb555, etc). Any help will be greatly
>>> > appreciated!!


.



Relevant Pages

  • Re: How to convert image from Format1bppIndexed to Format24bppRgb?
    ... //image you just need to create a bitmap of the correct size ... > case of conversion to any indexed type you need to understand the pixel ... > Find great Windows Forms articles in Windows Forms Tips and Tricks ... >>> The size of the image file has no bearing on the amount of memory you ...
    (microsoft.public.dotnet.framework.drawing)
  • Re: Memory Leak when set a controls image property in InitializeCompo
    ... Find great Windows Forms articles in Windows Forms Tips and Tricks ... > But it seems that the memory doesn't leak when the Image of a control is ... > How to prevent the memory leak for such case. ...
    (microsoft.public.dotnet.framework.drawing)
  • Re: How to convert image from Format1bppIndexed to Format24bppRgb?
    ... bitmap will also be a 1bpp bitmap. ... case of conversion to any indexed type you need to understand the pixel ... Find great Windows Forms articles in Windows Forms Tips and Tricks ... > of trying to create the 24bpp and generating an "out of memory" error, ...
    (microsoft.public.dotnet.framework.drawing)
  • Re: Fastest possible way to load a image file?
    ... Find great Windows Forms articles in Windows Forms Tips and Tricks ... they are about 8000x8000px> in size, i have tryed to load them all into memory but i always get a out of memory exception> so i have given up on that idea... ...
    (microsoft.public.dotnet.framework.drawing)
  • Re: Speeding up slow XP PCs - suggested remedies when youve tried the obvious
    ... articles which suggest the same old things to try: ... add more memory; defrag hard disk; remove any unnecessary programs from ... The symptom is very long boot times (about 1 minute each on the Windows ... System File Checker. ...
    (uk.comp.misc)