42 lines
1.2 KiB
Matlab
42 lines
1.2 KiB
Matlab
function output = gzipdecode(input)
|
|
import jsonlab.*
|
|
%GZIPDECODE Decompress input bytes using GZIP.
|
|
%
|
|
% output = gzipdecode(input)
|
|
%
|
|
% The function takes a compressed byte array INPUT and returns inflated
|
|
% bytes OUTPUT. The INPUT is a result of GZIPENCODE function. The OUTPUT
|
|
% is always an 1-by-N uint8 array. JAVA must be enabled to use the function.
|
|
%
|
|
% See also gzipencode typecast
|
|
%
|
|
% Copyright (c) 2012, Kota Yamaguchi
|
|
% URL: https://www.mathworks.com/matlabcentral/fileexchange/39526-byte-encoding-utilities
|
|
% License : BSD, see LICENSE_*.txt
|
|
%
|
|
|
|
if(nargin==0)
|
|
error('you must provide at least 1 input');
|
|
end
|
|
if(exist('zmat')==3)
|
|
output=zmat(uint8(input),0,'gzip');
|
|
return;
|
|
end
|
|
error(javachk('jvm'));
|
|
if ischar(input)
|
|
warning('gzipdecode:inputTypeMismatch', ...
|
|
'Input is char, but treated as uint8.');
|
|
input = uint8(input);
|
|
end
|
|
if ~isa(input, 'int8') && ~isa(input, 'uint8')
|
|
error('Input must be either int8 or uint8.');
|
|
end
|
|
|
|
gzip = java.util.zip.GZIPInputStream(java.io.ByteArrayInputStream(input));
|
|
buffer = java.io.ByteArrayOutputStream();
|
|
org.apache.commons.io.IOUtils.copy(gzip, buffer);
|
|
gzip.close();
|
|
output = typecast(buffer.toByteArray(), 'uint8')';
|
|
|
|
end
|