Author |
Topic  |
|
AndyColmes
  
USA
351 Posts |
Posted - Mar 11 2017 : 23:10:53
|
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
|
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 |
 |
|
AndyColmes
  
USA
351 Posts |
Posted - Mar 12 2017 : 10:11:52
|
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
|
 |
|
w2m
   
USA
1990 Posts |
Posted - Mar 12 2017 : 10:15:19
|
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 |
 |
|
w2m
   
USA
1990 Posts |
Posted - Mar 12 2017 : 11:43:50
|
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 |
 |
|
w2m
   
USA
1990 Posts |
Posted - Mar 12 2017 : 11:51:22
|
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 |
 |
|
w2m
   
USA
1990 Posts |
Posted - Mar 12 2017 : 12:38:03
|
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 |
 |
|
AndyColmes
  
USA
351 Posts |
Posted - Mar 13 2017 : 01:17:48
|
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
|
 |
|
AndyColmes
  
USA
351 Posts |
Posted - Mar 13 2017 : 05:33:59
|
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
|
 |
|
xequte
    
39000 Posts |
|
AndyColmes
  
USA
351 Posts |
Posted - Mar 16 2017 : 15:07:51
|
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
|
 |
|
w2m
   
USA
1990 Posts |
Posted - Mar 16 2017 : 15:09:13
|
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 |
 |
|
|
Topic  |
|