Convert stream data according to the filter params set before encoding.
158 $predictor = self::_getPredictorValue(
$params);
159 $colors = self::_getColorsValue(
$params);
160 $bitsPerComponent = self::_getBitsPerComponentValue(
$params);
164 if ($predictor == 1) {
169 if ($predictor == 2) {
170 #require_once 'Zend/Pdf/Exception.php'; 175 if ($predictor == 15) {
181 if ($predictor == 10 ||
189 if($bitsPerComponent == 16) {
190 #require_once 'Zend/Pdf/Exception.php'; 191 throw new Zend_Pdf_Exception(
"PNG Prediction with bit depth greater than 8 not yet supported.");
194 $bitsPerSample = $bitsPerComponent*$colors;
195 $bytesPerSample = (int)(($bitsPerSample + 7)/8);
196 $bytesPerRow = (int)(($bitsPerSample*
$columns + 7)/8);
197 $rows = strlen(
$data)/$bytesPerRow;
201 if (!is_integer($rows)) {
202 #require_once 'Zend/Pdf/Exception.php'; 206 switch ($predictor) {
211 $offset += $bytesPerRow;
219 $lastSample = array_fill(0, $bytesPerSample, 0);
220 for ($count2 = 0; $count2 < $bytesPerRow; $count2++) {
221 $newByte = ord(
$data[$offset++]);
223 $output .= chr($newByte - $lastSample[$count2 % $bytesPerSample]);
224 $lastSample[$count2 % $bytesPerSample] = $newByte;
230 $lastRow = array_fill(0, $bytesPerRow, 0);
234 for ($count2 = 0; $count2 < $bytesPerRow; $count2++) {
235 $newByte = ord(
$data[$offset++]);
237 $output .= chr($newByte - $lastRow[$count2]);
238 $lastRow[$count2] = $newByte;
244 $lastRow = array_fill(0, $bytesPerRow, 0);
248 $lastSample = array_fill(0, $bytesPerSample, 0);
249 for ($count2 = 0; $count2 < $bytesPerRow; $count2++) {
250 $newByte = ord(
$data[$offset++]);
252 $output .= chr($newByte - floor(( $lastSample[$count2 % $bytesPerSample] + $lastRow[$count2])/2));
253 $lastSample[$count2 % $bytesPerSample] = $lastRow[$count2] = $newByte;
259 $lastRow = array_fill(0, $bytesPerRow, 0);
260 $currentRow = array();
264 $lastSample = array_fill(0, $bytesPerSample, 0);
265 for ($count2 = 0; $count2 < $bytesPerRow; $count2++) {
266 $newByte = ord(
$data[$offset++]);
268 $output .= chr($newByte - self::_paeth( $lastSample[$count2 % $bytesPerSample],
270 ($count2 - $bytesPerSample < 0)?
271 0 : $lastRow[$count2 - $bytesPerSample] ));
272 $lastSample[$count2 % $bytesPerSample] = $currentRow[$count2] = $newByte;
274 $lastRow = $currentRow;
281 #require_once 'Zend/Pdf/Exception.php';
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE]