Newer
Older
import compression.fileformat.QCMPFileHeader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ImageDecompressor extends CompressorDecompressorBase {
public ImageDecompressor(ParsedCliOptions options) {
super(options);
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
private DataInputStream openCompressedFile() throws FileNotFoundException {
FileInputStream fis = new FileInputStream(options.getInputFile());
return new DataInputStream(fis);
}
private QCMPFileHeader readQCMPFileHeader(DataInputStream inputStream) throws IOException {
QCMPFileHeader header = new QCMPFileHeader();
if (!header.readHeader(inputStream)) {
// Not valid QCMP file.
return null;
}
return header;
}
public String inspectCompressedFile() throws IOException {
StringBuilder logBuilder = new StringBuilder();
DataInputStream inputStream = openCompressedFile();
final QCMPFileHeader header = readQCMPFileHeader(inputStream);
if (header == null) {
logBuilder.append("Input file is not valid QCMPFile\n");
} else {
final boolean validHeader = header.validateHeader();
logBuilder.append("Header is:\t\t").append(validHeader ? "valid" : "invalid").append('\n');
logBuilder.append("Magic value:\t\t").append(header.getMagicValue()).append('\n');
logBuilder.append("Quantization type\t");
switch (header.getQuantizationType()) {
case Scalar:
logBuilder.append("Scalar\n");
break;
case Vector1D:
logBuilder.append("Vector1D\n");
break;
case Vector2D:
logBuilder.append("Vector2D\n");
break;
case Vector3D:
logBuilder.append("Vector3D\n");
break;
case Invalid:
logBuilder.append("INVALID\n");
break;
}
logBuilder.append("Bits per pixel:\t\t").append(header.getBitsPerPixel()).append('\n');
logBuilder.append("Codebook:\t\t").append(header.isCodebookPerPlane() ? "one per plane\n" : "one for all\n");
logBuilder.append("Image size X:\t\t").append(header.getImageSizeX()).append('\n');
logBuilder.append("Image size Y:\t\t").append(header.getImageSizeY()).append('\n');
logBuilder.append("Image size Z:\t\t").append(header.getImageSizeZ()).append('\n');
logBuilder.append("Vector size X:\t\t").append(header.getVectorSizeX()).append('\n');
logBuilder.append("Vector size Y:\t\t").append(header.getVectorSizeY()).append('\n');
logBuilder.append("Vector size Z:\t\t").append(header.getVectorSizeZ()).append('\n');
}
return logBuilder.toString();
}