PDImageXObject pdImageXObject = new PredictorEncoder(document, image).encode(); if (pdImageXObject != null)
copyImageBytes(transferRowByte, indexInTransferRow, xValues, alphaImageData, alphaPtr); copyImageBytes(prevRowByte, indexInTransferRow, bValues, null, 0); copyIntToBytes(transferRowInt, indexInTransferRow, xValues, alphaImageData, alphaPtr); copyIntToBytes(prevRowInt, indexInTransferRow, bValues, null, 0); copyShortsToBytes(transferRowShort, indexInTransferRow, xValues, alphaImageData, alphaPtr); copyShortsToBytes(prevRowShort, indexInTransferRow, bValues, null, 0); int c = cValues[bytePtr] & 0xFF; dataRawRowNone[writerPtr] = (byte) x; dataRawRowSub[writerPtr] = pngFilterSub(x, a); dataRawRowUp[writerPtr] = pngFilterUp(x, b); dataRawRowAverage[writerPtr] = pngFilterAverage(x, a, b); dataRawRowPaeth[writerPtr] = pngFilterPaeth(x, a, b, c); writerPtr++; byte[] rowToWrite = chooseDataRowToWrite(); deflater.end(); return preparePredictorPDImage(stream, bytesPerComponent * 8);
copyImageBytes(transferRowByte, indexInTransferRow, xValues, alphaImageData, alphaPtr); copyImageBytes(prevRowByte, indexInTransferRow, bValues, null, 0); copyIntToBytes(transferRowInt, indexInTransferRow, xValues, alphaImageData, alphaPtr); copyIntToBytes(prevRowInt, indexInTransferRow, bValues, null, 0); copyShortsToBytes(transferRowShort, indexInTransferRow, xValues, alphaImageData, alphaPtr); copyShortsToBytes(prevRowShort, indexInTransferRow, bValues, null, 0); int c = cValues[bytePtr] & 0xFF; dataRawRowNone[writerPtr] = (byte) x; dataRawRowSub[writerPtr] = pngFilterSub(x, a); dataRawRowUp[writerPtr] = pngFilterUp(x, b); dataRawRowAverage[writerPtr] = pngFilterAverage(x, a, b); dataRawRowPaeth[writerPtr] = pngFilterPaeth(x, a, b, c); writerPtr++; byte[] rowToWrite = chooseDataRowToWrite(); deflater.end(); return preparePredictorPDImage(stream, bytesPerComponent * 8);
PDImageXObject pdImageXObject = new PredictorEncoder(document, image).encode(); if (pdImageXObject != null)
long estCompressSum = estCompressSum(dataRawRowNone); long estCompressSumSub = estCompressSum(dataRawRowSub); long estCompressSumUp = estCompressSum(dataRawRowUp); long estCompressSumAvg = estCompressSum(dataRawRowAverage); long estCompressSumPaeth = estCompressSum(dataRawRowPaeth); if (estCompressSum > estCompressSumSub)
private static byte pngFilterUp(int x, int b) { // Same as pngFilterSub, just called with the prior row return pngFilterSub(x, b); }
long estCompressSum = estCompressSum(dataRawRowNone); long estCompressSumSub = estCompressSum(dataRawRowSub); long estCompressSumUp = estCompressSum(dataRawRowUp); long estCompressSumAvg = estCompressSum(dataRawRowAverage); long estCompressSumPaeth = estCompressSum(dataRawRowPaeth); if (estCompressSum > estCompressSumSub)
private static byte pngFilterUp(int x, int b) { // Same as pngFilterSub, just called with the prior row return pngFilterSub(x, b); }