Qtable(boolean wantLuma, float quality) { elementPrecision = 0; JPEGQTable base = null; if (wantLuma) { tableID = 0; base = JPEGQTable.K1Div2Luminance; } else { tableID = 1; base = JPEGQTable.K2Div2Chrominance; } if (quality != JPEG.DEFAULT_QUALITY) { quality = JPEG.convertToLinearQuality(quality); if (wantLuma) { base = JPEGQTable.K1Luminance.getScaledInstance (quality, true); } else { base = JPEGQTable.K2Div2Chrominance.getScaledInstance (quality, true); } } data = base.getTable(); }
void print() { System.out.println("Table id: " + Integer.toString(tableID)); System.out.println("Element precision: " + Integer.toString(elementPrecision)); (new JPEGQTable(data)).toString(); /* for (int i = 0; i < 64; i++) { if (i % 8 == 0) { System.out.println(); } System.out.print(" " + Integer.toString(data[i])); } System.out.println(); */ }
/** * Finds all DQT marker segments and returns all the q * tables as a single array of JPEGQTables. */ private JPEGQTable [] collectQTablesFromMetadata (JPEGMetadata metadata) { ArrayList tables = new ArrayList(); Iterator iter = metadata.markerSequence.iterator(); while (iter.hasNext()) { MarkerSegment seg = (MarkerSegment) iter.next(); if (seg instanceof DQTMarkerSegment) { DQTMarkerSegment dqt = (DQTMarkerSegment) seg; tables.addAll(dqt.tables); } } JPEGQTable [] retval = null; if (tables.size() != 0) { retval = new JPEGQTable[tables.size()]; for (int i = 0; i < retval.length; i++) { retval[i] = new JPEGQTable(((DQTMarkerSegment.Qtable)tables.get(i)).data); } } return retval; }
/** * Returns <code>true</code> if the write was aborted. */ private native boolean writeImage(long structPointer, byte [] data, int inCsType, int outCsType, int numBands, int [] bandSizes, int srcWidth, int destWidth, int destHeight, int stepX, int stepY, JPEGQTable [] qtables, boolean writeDQT, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables, boolean writeDHT, boolean optimizeHuffman, boolean progressive, int numScans, int [] scans, int [] componentIds, int [] HsamplingFactors, int [] VsamplingFactors, int [] QtableSelectors, boolean haveMetadata, int restartInterval);
/** * Returns {@code true} if the read was aborted. */ private native boolean readImage(int imageIndex, long structPointer, byte [] buffer, int numRasterBands, int [] srcBands, int [] bandSizes, int sourceXOffset, int sourceYOffset, int sourceWidth, int sourceHeight, int periodX, int periodY, JPEGQTable [] abbrevQTables, JPEGHuffmanTable [] abbrevDCHuffmanTables, JPEGHuffmanTable [] abbrevACHuffmanTables, int minProgressivePass, int maxProgressivePass, boolean wantUpdates);
/** * Finds all DQT marker segments and returns all the q * tables as a single array of JPEGQTables. */ private JPEGQTable [] collectQTablesFromMetadata (JPEGMetadata metadata) { ArrayList<DQTMarkerSegment.Qtable> tables = new ArrayList<>(); Iterator<MarkerSegment> iter = metadata.markerSequence.iterator(); while (iter.hasNext()) { MarkerSegment seg = iter.next(); if (seg instanceof DQTMarkerSegment) { DQTMarkerSegment dqt = (DQTMarkerSegment) seg; tables.addAll(dqt.tables); } } JPEGQTable [] retval = null; if (tables.size() != 0) { retval = new JPEGQTable[tables.size()]; for (int i = 0; i < retval.length; i++) { retval[i] = new JPEGQTable(tables.get(i).data); } } return retval; }
/** * Returns {@code true} if the write was aborted. */ private native boolean writeImage(long structPointer, byte [] data, int inCsType, int outCsType, int numBands, int [] bandSizes, int srcWidth, int destWidth, int destHeight, int stepX, int stepY, JPEGQTable [] qtables, boolean writeDQT, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables, boolean writeDHT, boolean optimizeHuffman, boolean progressive, int numScans, int [] scans, int [] componentIds, int [] HsamplingFactors, int [] VsamplingFactors, int [] QtableSelectors, boolean haveMetadata, int restartInterval);
/** * Returns <code>true</code> if the read was aborted. */ private native boolean readImage(int imageIndex, long structPointer, byte [] buffer, int numRasterBands, int [] srcBands, int [] bandSizes, int sourceXOffset, int sourceYOffset, int sourceWidth, int sourceHeight, int periodX, int periodY, JPEGQTable [] abbrevQTables, JPEGHuffmanTable [] abbrevDCHuffmanTables, JPEGHuffmanTable [] abbrevACHuffmanTables, int minProgressivePass, int maxProgressivePass, boolean wantUpdates);