ImageEn for Delphi and C++ Builder ImageEn for Delphi and C++ Builder

 

ImageEn Forum
Profile    Join    Active Topics    Forum FAQ    Search this forumSearch
Forum membership is Free!  Click Join to sign-up
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 ImageEn Library for Delphi, C++ and .Net
 ImageEn and IEvolution Support Forum
 "Not enough storage to process this command"
 New Topic  Reply to Topic
Author Previous Topic Topic Next Topic  

AndyColmes

USA
351 Posts

Posted - Mar 11 2017 :  23:10:53  Show Profile  Reply
I get this message a lot when doing just about anything like scrolling, zooming, etc. I assume this is a message from within ImageEn and mostly, I guess because I am dealing with large images. Is there a way to get around that, like increasing memory or cache somewhere?

Thanks in advance.

Andy

w2m

USA
1990 Posts

Posted - Mar 12 2017 :  09:41:12  Show Profile  Reply
I get this sometimes when running in the IDE, but no errors when run from the EXE. There is nothing I know of to fix this from within the IDE. You could also try building as Win 64.

Does the problem occur only when run from the IDE?
What is your operating system?
How much memory does the pc have?
Are you using TIEBitmap with LegacyBitmap := False?
TIEBitmap handles images using memory mapped file (for large images) or main memory. This allows handling of large images and to include input/output and image processing in a multi-threaded environment.

Another way to try to solve this if you are working with more than one large image at a time is to use thumbnails in TImageEnMView and only load the full image into TImageEnView from the filename stored in the TImageEnMView.MIO.Prams.

Bill Miller
Adirondack Software & Graphics
Email: w2m@hughes.net
EBook: http://www.imageen.com/ebook/
Custom Commercial ImageEn Development
Go to Top of Page

AndyColmes

USA
351 Posts

Posted - Mar 12 2017 :  10:11:52  Show Profile  Reply
Hello Bill, I don't run from the IDE and chances are that I will probably encounter memory issues if I do. The errors come from the EXE itself. I have not compiled it as Win64 yet, but I will probably give that a try if it helps.

My operating system is Windows 10 Pro 64-bit with 8 GB of RAM. I did turn LegacyBitmap off for all TImageEnVect on the form. There are 2 visible TImageEnVect . But I do have one TImageEnVect that has 2 layers loaded with large images.

If it is a memory constraint, it would be nice if ImageEn can notify when loading those images if they are either too large or not loadable. At which point maybe a prompt that those images should be resampled to smaller sizes?

It is definitely a show stopper when you get the error when running the EXE as there is really nothing you can do after that, other than killing the EXE via the taskbar.

Andy
Go to Top of Page

w2m

USA
1990 Posts

Posted - Mar 12 2017 :  10:15:19  Show Profile  Reply
So you get the error with only one image loaded? How big is the image?
Send me your image or post a link to it and I'll see what it does here if you wish.

Also if you have multiple TImageEnVect and some with multiple layers with very large images that may explain the problem especially if the images are huge.

Bill Miller
Adirondack Software & Graphics
Email: w2m@hughes.net
EBook: http://www.imageen.com/ebook/
Custom Commercial ImageEn Development
Go to Top of Page

w2m

USA
1990 Posts

Posted - Mar 12 2017 :  11:43:50  Show Profile  Reply
I just tested here with the largest image I have: 11,050 x 3,089 24-bit jpeg with no layers and one image shows memory used is 100,006 kb. I have no problems at all even in the IDE. Win10, 24gb ram.

You can calculate memory with:
var
  iBitDepth: Integer;
  idim: Integer;
  iMemorySize: string;
  iOriginalHeight: Integer;
  iOriginalWidth: Integer;

with ImageEnVect.IO.Params do
begin
  iOriginalHeight := OriginalWidth;
  iOriginalWidth := OriginalHeight;
  idim := (((iOriginalHeight * iBitDepth) + 31) div 32) * 4 * iOriginalWidth;
  // only one frame is calculated
  iMemorySize := iMemorySize + string(IEBytesToStr(idim, 1024)) + ' (' + iemsg(IEMSG_MEM) + ')';
  StatusBar1.Panels[15].Text := 'Memory: ' + iMemorySize;
end;

Bill Miller
Adirondack Software & Graphics
Email: w2m@hughes.net
EBook: http://www.imageen.com/ebook/
Custom Commercial ImageEn Development
Go to Top of Page

w2m

USA
1990 Posts

Posted - Mar 12 2017 :  11:51:22  Show Profile  Reply
You can prevent some problems by using IO.Aborting:

ImageEnVect.IO.LoadFromFile(iFilename);
if ImageEnVect.IO.Aborting then
begin
  iNotification := NotificationCenter1.CreateNotification;
  try
    iNotification.Name := 'ErrorNotification';
    iNotification.Title := 'Error Opening Image';
    iNotification.AlertBody := 'There was an error opening the image.  The image can not be opened.';
    NotificationCenter1.PresentNotification(iNotification);
  finally
      iNotification.Free;
  end;
  Exit;
end;

Bill Miller
Adirondack Software & Graphics
Email: w2m@hughes.net
EBook: http://www.imageen.com/ebook/
Custom Commercial ImageEn Development
Go to Top of Page

w2m

USA
1990 Posts

Posted - Mar 12 2017 :  12:38:03  Show Profile  Reply
I just loaded my large image, then created 10 layers with the large image. Even with all this, the ImageEnVect can be scrolled, zoomed, panned, and layers can be moved. I am beginning to think either your images are much larger than mine, or you are doing something in code somewhere that causes the problem.

Lets find out, by loading your images in a simple demo without extra code to see if your problem persists.

Bill Miller
Adirondack Software & Graphics
Email: w2m@hughes.net
EBook: http://www.imageen.com/ebook/
Custom Commercial ImageEn Development
Go to Top of Page

AndyColmes

USA
351 Posts

Posted - Mar 13 2017 :  01:17:48  Show Profile  Reply
Thanks very much Bill. I will try to create a stripped down demo with the images and see if I could duplicate the issue. I will upload the demo and the images when they are ready. Thanks again, Bill.

Andy
Go to Top of Page

AndyColmes

USA
351 Posts

Posted - Mar 13 2017 :  05:33:59  Show Profile  Reply
I compiled the demo to a 64-bit EXE and it worked better. The 32-bit version just cannot handle the images, regardless of what I cut off in code. Basically, I have 2 TImageEnVect. One of the TImageEnVect has 2 layers. So, there are a total of 3 large images loaded on the form; one copy in one TImageEnVect and 2 in the other with the layers. I synchronize the zooming and scrolling with the 2 TImageEnVects.

Andy
Go to Top of Page

xequte

38222 Posts

Posted - Mar 14 2017 :  05:52:29  Show Profile  Reply
Hi Andy

Are you able to reproduce the issue in a simple demo?



Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

AndyColmes

USA
351 Posts

Posted - Mar 16 2017 :  15:07:51  Show Profile  Reply
Hi Nigel,

Yes, I am able to reproduce the issue with a simple demo that has the 2 TImageEnVect, with one TImageEnVect using 2 layers. The total of 3 large images (basically the same size but with different colors) are loaded in the form. The one that causes the issue is the TImageEnVect with 2 layers. Scrolling using the mouse on it triggers the prompt. Not sure why since there is no code that can maybe interfere with the scrolling or zooming.

Andy
Go to Top of Page

w2m

USA
1990 Posts

Posted - Mar 16 2017 :  15:09:13  Show Profile  Reply
We can not help you very much unless you provide us with the images to test.

Bill Miller
Adirondack Software & Graphics
Email: w2m@hughes.net
EBook: http://www.imageen.com/ebook/
Custom Commercial ImageEn Development
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
Jump To: