| LittleCMS2.6 API.pdf page 83 states :
void   cmsDoTransform(cmsHTRANSFORM hTransform, const void * InputBuffer,
void * OutputBuffer, cmsUInt32Number Size);
hTransform: Handle to a color transform object. 
InputBuffer: A pointer to the input bitmap 
OutputBuffer: A pointer to the output bitmap. 
Size: the number of PIXELS to be transformed.
First Example
----------------------------------------------------------------------------
--------------------
RGB Image is 4 pixels wide by 4 pixels high (3 bytes/pixels).
Do I encode 16 pixels x 3 bytes/pixels = 48  as Size?
The size of the byte array is 48, yes, but there are only 16 pixels to
process :
	Byte[] Input = new byte[48];
	Byte[] Output = new byte[48];
	UInt32 pixels = 16;
	cmsDoTransform(xform, Input, Output, pixels);
OK, this works.
Second Example
----------------------------------------------------------------------------
--------------------
RGB Image is 512 pixels wide by 512 pixels high (3 bytes/pixels).
Do I encode 262144 pixels x 3 bytes/pixels = 786432  as Size?
The size of the byte array is 786432, no choice, but there are only 262144
pixels to process :
	Byte[] Input = new byte[786432];
	Byte[] Output = new byte[786432];
	UInt32 pixels = 262144;
	cmsDoTransform(xform, Input, Output, pixels);
No, this does NOT work, MemoryAccessViolations?
Oops!!! I think I understand what my error is : 
Input is RGB but Output is *CMYK* (in my code), so I need to allocate 4
bytes for each pixel on the output buffer!!!!!
	Byte[] Input = new byte[786432];
	Byte[] Output = new byte[1048576];
	UInt32 pixels = 262144;
	cmsDoTransform(xform, Input, Output, pixels);
This is
working!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Thank you Christian and Noel -- I owe you each 12 beers and a pizza, if ever
you pass by Montreal ;-)
Marti Maria, please consider add a small example in the future to the API
documentation?
 
// Roger
------------------------------
Message: 5
Date: Sun, 10 Jul 2016 09:15:36 +0200
From: Christian Schmitz <rea...@mo...>
Subject: Re: [Lcms-user] Upper limit cmsDoTransform
To: lcm...@li...
Message-ID:
	<F47...@mo...>
Content-Type: text/plain; charset=us-ascii
> Am 10.07.2016 um 02:18 schrieb Roger Breton <gr...@vi...>:
> 
> The following code works :
> 
>            Byte[] Input1 = new byte[6500];
>            Byte[] Output1 = new byte[6500];
>            UInt32 pixels = 6500;
Are you sure it'S not 6500 * 4 bytes for 6500 pixels?
Or * 3 for RGB?
Sincerely
Christian
--
Read our blog about news on our plugins:
http://www.mbsplugins.de/
 |