[sane-devel] Calculating maxlen

abel deuring adeuring@gmx.net
Sun, 19 Sep 2004 22:32:45 +0200


Paul wrote:
> Hi,
> 
> 
>>max_len is set by the frontend. The buffer is allocated by the frontend
>>and the size of the buffer must be at least max_len bytes.
>>
>>max_len and the size of the buffer are arbitary. The backend must be
>>able to handle each size from max_len=1 to max_len > size of the image.
> 
> 
> Okay, I need to be clear here.
> 
> max_len is some size large enough to scan something in. How do I know
> how big to make this to (say) scan an A4 picture at 8bpp resolution? To
> me, it looks like I multiply bytes_per_line * pixels_per_line * lines *
> depth to accomodate everything.
> 
> I'm currently toying with the code so I know what has to be done when it
> comes to implementing the code for real.

Paul,

you can get the size of the entire image from the result of a call of 
sane_get_parameters. (Make sure that you call sane_get_parameters 
_after_ the call of sane_start. Earlier calls do not necessarily return 
precise values.) But you don't need to read all scan data with only one 
call of sane_read. An A4 size RGB scan with 300dpi has a data size of 
~24 MB, and this is perhaps more than you want to keep in RAM. For a 
preview, lower resolutions are often preferable. I assume that Scribus 
has some way to calculate such a preview from a high resolution image.

cheers
Abel