Imaging component for viewing very large JPG's?

  • Thread starter Thread starter Ed Sonneveld
  • Start date Start date
E

Ed Sonneveld

I'm searching for a component which is able to show very large JPG images
(sometimes more than 30 MB). These are professional scans of large drawings
from an archive.

I tried DotImage from Atalasoft, but it needs to map a huge block of memory
for displaying the image, which often results in memory problems. I am
looking for a component that displays the JPG without using so much memory
(if that is possible).

Any ideas are very welcome

Ed
 
I don't know if you are going to be able to get away without using large
amounts of memory. I believe to display the image the JPG needs to get
decompressed and basically becomes like a plain BMP in memory. You might
check in to Paint.Net. It's a very nice open source graphics application
built in .Net. You could dig in to the code and see what it's doing and
(license permitting) utilize some of it's code.
 
Hi Ed,

There are only a few possible ways to display an image, regardless of the
technology. In most, all of the image pixels must be loaded into memory,
regardless of whether you display the entire image or not. The other
possible way is to approach the problem from one of 2 possible avenues. If
you don't have to display the entire image, you read only the pixels you
will be displaying. The other way is to keep the file open, and read the
pixels each time you paint the image, one set of bytes at a time. This
second method is definitely a performance killer, but it does cut down on
memory usage.

--
HTH,

Kevin Spencer
Chicken Salad Surgeon
Microsoft MVP
 
Hi Andrew,

Good idea, but paint.NET has memory problems as well with these images.

Ed

Andrew Faust said:
I don't know if you are going to be able to get away without using large
amounts of memory. I believe to display the image the JPG needs to get
decompressed and basically becomes like a plain BMP in memory. You might
check in to Paint.Net. It's a very nice open source graphics application
built in .Net. You could dig in to the code and see what it's doing and
(license permitting) utilize some of it's code.

--
Andrew Faust
andrew[at]andrewfaust.com
http://www.andrewfaust.com


Ed Sonneveld said:
I'm searching for a component which is able to show very large JPG images
(sometimes more than 30 MB). These are professional scans of large
drawings from an archive.

I tried DotImage from Atalasoft, but it needs to map a huge block of
memory for displaying the image, which often results in memory problems.
I am looking for a component that displays the JPG without using so much
memory (if that is possible).

Any ideas are very welcome

Ed
 
Hi Kevin,

Thanks for the info. The images must be displayed entirely. Coding this
stuff myself goes way beyond my knowledge, I'm mainly a winforms database
programmer.

Therefore I hoped that some components would work like irfanview or the
Windows XP 'picture and fax viewer', for example. These do not seem to have
memory problems. Too bad they cannot be used as components AFAIK.

- Ed
 
Does it have to be displayed full size all the time? You could use a
graphics library (ImageMagick is nice) to create a scaled down version to
show by default. Then simply load the entire image if the user requests it.
 
Ed Sonneveld said:
Hi Kevin,

Thanks for the info. The images must be displayed entirely. Coding this
stuff myself goes way beyond my knowledge, I'm mainly a winforms database
programmer.

Therefore I hoped that some components would work like irfanview or the
Windows XP 'picture and fax viewer', for example. These do not seem to
have memory problems. Too bad they cannot be used as components AFAIK.

This seems to be a very common question here, everyone is trying to load
100+MB images these days. A lot of programming models cater for this sort of
thing by streaming, right back to the early days (eg FTP). But for some
reason image compression general doesn't.

Michael
 
The image must always first be shown as 'fit to screen', and then, if the
user wants, be zoomed in.
I guess making a 'on the fly' scaled down version with such a library may
take a while, or can that be done fast?

- Ed

Andrew Faust said:
Does it have to be displayed full size all the time? You could use a
graphics library (ImageMagick is nice) to create a scaled down version to
show by default. Then simply load the entire image if the user requests
it.

--
Andrew Faust
andrew[at]andrewfaust.com
http://www.andrewfaust.com


Ed Sonneveld said:
Hi Kevin,

Thanks for the info. The images must be displayed entirely. Coding this
stuff myself goes way beyond my knowledge, I'm mainly a winforms database
programmer.

Therefore I hoped that some components would work like irfanview or the
Windows XP 'picture and fax viewer', for example. These do not seem to
have memory problems. Too bad they cannot be used as components AFAIK.

- Ed
 
Honestly, I don't know how fast it will be to resize an image that large. I
do know, though, that ImageMagick should be able to do it pretty well as
fast as any other image library out there. It's a very mature open source
library. If it's possible you may want to do the resize only once and save
both the full and smaller sized images for faster display later on.

--
Andrew Faust
andrew[at]andrewfaust.com
http://www.andrewfaust.com


Ed Sonneveld said:
The image must always first be shown as 'fit to screen', and then, if the
user wants, be zoomed in.
I guess making a 'on the fly' scaled down version with such a library
may take a while, or can that be done fast?

- Ed

Andrew Faust said:
Does it have to be displayed full size all the time? You could use a
graphics library (ImageMagick is nice) to create a scaled down version
to show by default. Then simply load the entire image if the user
requests it.

--
Andrew Faust
andrew[at]andrewfaust.com
http://www.andrewfaust.com


Ed Sonneveld said:
Hi Kevin,

Thanks for the info. The images must be displayed entirely. Coding this
stuff myself goes way beyond my knowledge, I'm mainly a winforms
database programmer.

Therefore I hoped that some components would work like irfanview or the
Windows XP 'picture and fax viewer', for example. These do not seem to
have memory problems. Too bad they cannot be used as components AFAIK.

- Ed

Hi Ed,

There are only a few possible ways to display an image, regardless of
the technology. In most, all of the image pixels must be loaded into
memory, regardless of whether you display the entire image or not. The
other possible way is to approach the problem from one of 2 possible
avenues. If you don't have to display the entire image, you read only
the pixels you will be displaying. The other way is to keep the file
open, and read the pixels each time you paint the image, one set of
bytes at a time. This second method is definitely a performance
killer, but it does cut down on memory usage.

--
HTH,

Kevin Spencer
Chicken Salad Surgeon
Microsoft MVP



I'm searching for a component which is able to show very large JPG
images (sometimes more than 30 MB). These are professional scans of
large drawings from an archive.

I tried DotImage from Atalasoft, but it needs to map a huge block of
memory for displaying the image, which often results in memory
problems. I am looking for a component that displays the JPG without
using so much memory (if that is possible).

Any ideas are very welcome

Ed
 
Andrew Faust said:
Honestly, I don't know how fast it will be to resize an image that large.
I do know, though, that ImageMagick should be able to do it pretty well as
fast as any other image library out there. It's a very mature open source
library. If it's possible you may want to do the resize only once and save
both the full and smaller sized images for faster display later on.

It's worth noting that most good bitmap packages do this in some form.

Michael
 
Back
Top