// read the header
byte[] headerData = new byte[ProfileHeader.HEADERSIZE];
if (in.read(headerData) != ProfileHeader.HEADERSIZE)
throw new IllegalArgumentException("Invalid profile header");
ProfileHeader header = new ProfileHeader(headerData);
// verify it as a correct ICC header, but do not verify the
// size as we are reading from a stream.
header.verifyHeader(-1);
// get the size
byte[] data = new byte[header.getSize()];
System.arraycopy(headerData, 0, data, 0, ProfileHeader.HEADERSIZE);
// read the rest
int totalBytes = header.getSize() - ProfileHeader.HEADERSIZE;
int bytesLeft = totalBytes;
while (bytesLeft > 0)
{
int read = in.read(data,
ProfileHeader.HEADERSIZE + (totalBytes - bytesLeft),