Examples of JBIG2Bitmap


Examples of org.jpedal.jbig2.image.JBIG2Bitmap

    if (symbolRefine) {
      arithmeticDecoder.resetRefinementStats(template, null);
    }

    JBIG2Bitmap bitmap = new JBIG2Bitmap(regionBitmapWidth, regionBitmapHeight, arithmeticDecoder, huffmanDecoder, mmrDecoder);

    bitmap.readTextRegion(sbHuffman, symbolRefine, noOfSymbolInstances, logStrips, noOfSymbols, symbolCodeTable, symbolCodeLength, symbols, defaultPixel, combinationOperator, transposed, referenceCorner, sOffset, huffmanFSTable, huffmanDSTable, huffmanDTTable, huffmanRDWTable, huffmanRDHTable, huffmanRDXTable, huffmanRDYTable, huffmanRSizeTable, template, symbolRegionAdaptiveTemplateX, symbolRegionAdaptiveTemplateY, decoder);

    if (inlineImage) {
      PageInformationSegment pageSegment = decoder.findPageSegement(segmentHeader.getPageAssociation());
      JBIG2Bitmap pageBitmap = pageSegment.getPageBitmap();

      if (JBIG2StreamDecoder.debug)
        System.out.println(pageBitmap + " " + bitmap);

      int externalCombinationOperator = regionFlags.getFlagValue(RegionFlags.EXTERNAL_COMBINATION_OPERATOR);
      pageBitmap.combine(bitmap, regionBitmapXLocation, regionBitmapYLocation, externalCombinationOperator);
    } else {
      bitmap.setBitmapNumber(getSegmentHeader().getSegmentNumber());
      decoder.appendBitmap(bitmap);
    }
View Full Code Here

Examples of org.jpedal.jbig2.image.JBIG2Bitmap

      genericRegionAdaptiveTemplateY[1] = readATValue();
    }

    if (noOfReferedToSegments == 0 || inlineImage) {
      PageInformationSegment pageSegment = decoder.findPageSegement(segmentHeader.getPageAssociation());
      JBIG2Bitmap pageBitmap = pageSegment.getPageBitmap();

      if (pageSegment.getPageBitmapHeight() == -1 && regionBitmapYLocation + regionBitmapHeight > pageBitmap.getHeight()) {
        pageBitmap.expand(regionBitmapYLocation + regionBitmapHeight, pageSegment.getPageInformationFlags().getFlagValue(PageInformationFlags.DEFAULT_PIXEL_VALUE));
      }
    }

    if (noOfReferedToSegments > 1) {
      if(JBIG2StreamDecoder.debug)
        System.out.println("Bad reference in JBIG2 generic refinement Segment");
     
      return;
    }

    JBIG2Bitmap referedToBitmap;
    if (noOfReferedToSegments == 1) {
      referedToBitmap = decoder.findBitmap(referedToSegments[0]);
    } else {
      PageInformationSegment pageSegment = decoder.findPageSegement(segmentHeader.getPageAssociation());
      JBIG2Bitmap pageBitmap = pageSegment.getPageBitmap();

      referedToBitmap = pageBitmap.getSlice(regionBitmapXLocation, regionBitmapYLocation, regionBitmapWidth, regionBitmapHeight);
    }

    arithmeticDecoder.resetRefinementStats(template, null);
    arithmeticDecoder.start();

    boolean typicalPredictionGenericRefinementOn = refinementRegionFlags.getFlagValue(RefinementRegionFlags.TPGDON) != 0;

    JBIG2Bitmap bitmap = new JBIG2Bitmap(regionBitmapWidth, regionBitmapHeight, arithmeticDecoder, huffmanDecoder, mmrDecoder);

    bitmap.readGenericRefinementRegion(template, typicalPredictionGenericRefinementOn, referedToBitmap, 0, 0, genericRegionAdaptiveTemplateX, genericRegionAdaptiveTemplateY);

    if (inlineImage) {
      PageInformationSegment pageSegment = decoder.findPageSegement(segmentHeader.getPageAssociation());
      JBIG2Bitmap pageBitmap = pageSegment.getPageBitmap();

      int extCombOp = regionFlags.getFlagValue(RegionFlags.EXTERNAL_COMBINATION_OPERATOR);

      pageBitmap.combine(bitmap, regionBitmapXLocation, regionBitmapYLocation, extCombOp);
    } else {
      bitmap.setBitmapNumber(getSegmentHeader().getSegmentNumber());
      decoder.appendBitmap(bitmap);
    }
  }
View Full Code Here

Examples of org.jpedal.jbig2.image.JBIG2Bitmap

        }
       
        decoder.movePointer(-bytesRead);
        }
       
        JBIG2Bitmap bitmap = new JBIG2Bitmap(regionBitmapWidth, regionBitmapHeight, arithmeticDecoder, huffmanDecoder, mmrDecoder);
        bitmap.clear(0);
        bitmap.readBitmap(useMMR, template, typicalPredictionGenericDecodingOn, false, null, genericBAdaptiveTemplateX, genericBAdaptiveTemplateY, useMMR ? 0 : length - 18);
       
       
       
        if (inlineImage) {
            PageInformationSegment pageSegment = decoder.findPageSegement(segmentHeader.getPageAssociation());
            JBIG2Bitmap pageBitmap = pageSegment.getPageBitmap();

            int extCombOp = regionFlags.getFlagValue(RegionFlags.EXTERNAL_COMBINATION_OPERATOR);
           
            if(pageSegment.getPageBitmapHeight() == -1 && regionBitmapYLocation + regionBitmapHeight > pageBitmap.getHeight()) {
              pageBitmap.expand(regionBitmapYLocation + regionBitmapHeight,
                  pageSegment.getPageInformationFlags().getFlagValue(PageInformationFlags.DEFAULT_PIXEL_VALUE));
            }
           
            pageBitmap.combine(bitmap, regionBitmapXLocation, regionBitmapYLocation, extCombOp);
        } else {
      bitmap.setBitmapNumber(getSegmentHeader().getSegmentNumber());
      decoder.appendBitmap(bitmap);
    }
View Full Code Here

Examples of org.jpedal.jbig2.image.JBIG2Bitmap

    bitmaps.add(bitmap);
  }

  public JBIG2Bitmap findBitmap(int bitmapNumber) {
    for (Iterator it = bitmaps.iterator(); it.hasNext();) {
      JBIG2Bitmap bitmap = (JBIG2Bitmap) it.next();
      if (bitmap.getBitmapNumber() == bitmapNumber) {
        return bitmap;
      }
    }

    return null;
View Full Code Here

Examples of org.jpedal.jbig2.image.JBIG2Bitmap

    return null;
  }

  public JBIG2Bitmap getPageAsJBIG2Bitmap(int i) {
    JBIG2Bitmap pageBitmap = findPageSegement(1).getPageBitmap();
    return pageBitmap;
  }
View Full Code Here

Examples of org.jpedal.jbig2.image.JBIG2Bitmap

    while (i < patternDictionarySegment.getSize()) {
      bitsPerValue++;
      i <<= 1;
    }
   
    JBIG2Bitmap bitmap = patternDictionarySegment.getBitmaps()[0];
    int patternWidth = bitmap.getWidth();
    int patternHeight = bitmap.getHeight();

    if (JBIG2StreamDecoder.debug)
      System.out.println("pattern size = " + patternWidth + ',' + patternHeight);

    boolean useMMR = halftoneRegionFlags.getFlagValue(HalftoneRegionFlags.H_MMR) != 0;
    int template = halftoneRegionFlags.getFlagValue(HalftoneRegionFlags.H_TEMPLATE);
   
    if (!useMMR) {
      arithmeticDecoder.resetGenericStats(template, null);
      arithmeticDecoder.start();
    }

    int halftoneDefaultPixel = halftoneRegionFlags.getFlagValue(HalftoneRegionFlags.H_DEF_PIXEL);
    bitmap = new JBIG2Bitmap(regionBitmapWidth, regionBitmapHeight, arithmeticDecoder, huffmanDecoder, mmrDecoder);
    bitmap.clear(halftoneDefaultPixel);

    boolean enableSkip = halftoneRegionFlags.getFlagValue(HalftoneRegionFlags.H_ENABLE_SKIP) != 0;
   
    JBIG2Bitmap skipBitmap = null;
    if (enableSkip) {
      skipBitmap = new JBIG2Bitmap(gridWidth, gridHeight, arithmeticDecoder, huffmanDecoder, mmrDecoder);
      skipBitmap.clear(0);
      for (int y = 0; y < gridHeight; y++) {
        for (int x = 0; x < gridWidth; x++) {
          int xx = gridX + y * stepY + x * stepX;
          int yy = gridY + y * stepX - x * stepY;
         
          if (((xx + patternWidth) >> 8) <= 0 || (xx >> 8) >= regionBitmapWidth || ((yy + patternHeight) >> 8) <= 0 || (yy >> 8) >= regionBitmapHeight) {
            skipBitmap.setPixel(y, x, 1);
          }
        }
      }
    }

    int[] grayScaleImage = new int[gridWidth * gridHeight];

    short[] genericBAdaptiveTemplateX = new short[4], genericBAdaptiveTemplateY = new short[4];

    genericBAdaptiveTemplateX[0] = (short) (template <= 1 ? 3 : 2);
    genericBAdaptiveTemplateY[0] = -1;
    genericBAdaptiveTemplateX[1] = -3;
    genericBAdaptiveTemplateY[1] = -1;
    genericBAdaptiveTemplateX[2] = 2;
    genericBAdaptiveTemplateY[2] = -2;
    genericBAdaptiveTemplateX[3] = -2;
    genericBAdaptiveTemplateY[3] = -2;

        JBIG2Bitmap grayBitmap ;

        for (int j = bitsPerValue - 1; j >= 0; --j) {
      grayBitmap = new JBIG2Bitmap(gridWidth, gridHeight, arithmeticDecoder, huffmanDecoder, mmrDecoder);

      grayBitmap.readBitmap(useMMR, template, false, enableSkip, skipBitmap, genericBAdaptiveTemplateX, genericBAdaptiveTemplateY, -1);

      i = 0;
      for (int row = 0; row < gridHeight; row++) {
        for (int col = 0; col < gridWidth; col++) {
          int bit = grayBitmap.getPixel(col, row) ^ (grayScaleImage[i] & 1);
          grayScaleImage[i] = (grayScaleImage[i] << 1) | bit;
          i++;
        }
      }
    }

    int combinationOperator = halftoneRegionFlags.getFlagValue(HalftoneRegionFlags.H_COMB_OP);

    i = 0;
    for (int col = 0; col < gridHeight; col++) {
      int xx = gridX + col * stepY;
      int yy = gridY + col * stepX;
      for (int row = 0; row < gridWidth; row++) {
        if (!(enableSkip && skipBitmap.getPixel(col, row) == 1)) {
          JBIG2Bitmap patternBitmap = patternDictionarySegment.getBitmaps()[grayScaleImage[i]];
          bitmap.combine(patternBitmap, xx >> 8, yy >> 8, combinationOperator);
        }
       
        xx += stepX;
        yy -= stepY;
       
        i++;
      }
    }

    if (inlineImage) {
      PageInformationSegment pageSegment = decoder.findPageSegement(segmentHeader.getPageAssociation());
      JBIG2Bitmap pageBitmap = pageSegment.getPageBitmap();

      int externalCombinationOperator = regionFlags.getFlagValue(RegionFlags.EXTERNAL_COMBINATION_OPERATOR);
      pageBitmap.combine(bitmap, regionBitmapXLocation, regionBitmapYLocation, externalCombinationOperator);
    } else {
      bitmap.setBitmapNumber(getSegmentHeader().getSegmentNumber());
      decoder.appendBitmap(bitmap);
    }

View Full Code Here

Examples of org.jpedal.jbig2.image.JBIG2Bitmap

   * @param page
   * @return
   */
  public BufferedImage getPageAsBufferedImage(int page) {
    page++;
    JBIG2Bitmap pageBitmap = streamDecoder.findPageSegement(page).getPageBitmap();

    byte[] bytes = pageBitmap.getData(true);

    if (bytes == null)
      return null;

    // make a a DEEP copy so we cant alter
    int len = bytes.length;
    byte[] copy = new byte[len];
    System.arraycopy(bytes, 0, copy, 0, len);

    // byte[] data = pageBitmap.getData(true).clone();
    int width = pageBitmap.getWidth();
    int height = pageBitmap.getHeight();

    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY);
    // <start-me>
    /** create an image from the raw data */
    DataBuffer db = new DataBufferByte(copy, copy.length);
View Full Code Here

Examples of org.jpedal.jbig2.image.JBIG2Bitmap

      height = pageStriping & 0x7fff;
    } else {
      height = pageBitmapHeight;
    }

    pageBitmap = new JBIG2Bitmap(pageBitmapWidth, height, arithmeticDecoder, huffmanDecoder, mmrDecoder);
    pageBitmap.clear(defPix);
  }
View Full Code Here

Examples of org.jpedal.jbig2.image.JBIG2Bitmap

              symbolID = (int) arithmeticDecoder.decodeIAID(symbolCodeLength, arithmeticDecoder.iaidStats);
              referenceDX = arithmeticDecoder.decodeInt(arithmeticDecoder.iardxStats).intResult();
              referenceDY = arithmeticDecoder.decodeInt(arithmeticDecoder.iardyStats).intResult();
            }
           
            JBIG2Bitmap referredToBitmap = bitmaps[symbolID];

            JBIG2Bitmap bitmap = new JBIG2Bitmap(symbolWidth, deltaHeight, arithmeticDecoder, huffmanDecoder, mmrDecoder);
            bitmap.readGenericRefinementRegion(sdRefinementTemplate, false, referredToBitmap, referenceDX, referenceDY, symbolDictionaryRAdaptiveTemplateX,
                symbolDictionaryRAdaptiveTemplateY);

            bitmaps[numberOfInputSymbols + i] = bitmap;

          } else {
            JBIG2Bitmap bitmap = new JBIG2Bitmap(symbolWidth, deltaHeight, arithmeticDecoder, huffmanDecoder, mmrDecoder);
            bitmap.readTextRegion(sdHuffman, true, refAggNum, 0, numberOfInputSymbols + i, null, symbolCodeLength, bitmaps, 0, 0, false, 1, 0,
                HuffmanDecoder.huffmanTableF, HuffmanDecoder.huffmanTableH, HuffmanDecoder.huffmanTableK, HuffmanDecoder.huffmanTableO, HuffmanDecoder.huffmanTableO,
                HuffmanDecoder.huffmanTableO, HuffmanDecoder.huffmanTableO, HuffmanDecoder.huffmanTableA, sdRefinementTemplate, symbolDictionaryRAdaptiveTemplateX,
                symbolDictionaryRAdaptiveTemplateY, decoder);
           
            bitmaps[numberOfInputSymbols + i] = bitmap;
          }
        } else {
          JBIG2Bitmap bitmap = new JBIG2Bitmap(symbolWidth, deltaHeight, arithmeticDecoder, huffmanDecoder, mmrDecoder);
          bitmap.readBitmap(false, sdTemplate, false, false, null, symbolDictionaryAdaptiveTemplateX, symbolDictionaryAdaptiveTemplateY, 0);
          bitmaps[numberOfInputSymbols + i] = bitmap;
        }

        i++;
      }

      if (sdHuffman && sdRefinementAggregate == 0) {
        int bmSize = huffmanDecoder.decodeInt(huffmanBMSizeTable).intResult();
        decoder.consumeRemainingBits();

        JBIG2Bitmap collectiveBitmap = new JBIG2Bitmap(totalWidth, deltaHeight, arithmeticDecoder, huffmanDecoder, mmrDecoder);

        if (bmSize == 0) {

          int padding = totalWidth % 8;
          int bytesPerRow = (int) Math.ceil(totalWidth / 8d);

          //short[] bitmap = new short[totalWidth];
          //decoder.readByte(bitmap);
                    int size = deltaHeight * ((totalWidth + 7) >> 3);
                    short[] bitmap = new short[size];
                    decoder.readByte(bitmap);

          short[][] logicalMap = new short[deltaHeight][bytesPerRow];
          int count = 0;
          for (int row = 0; row < deltaHeight; row++) {
            for (int col = 0; col < bytesPerRow; col++) {
              logicalMap[row][col] = bitmap[count];
              count++;
            }
          }

          int collectiveBitmapRow = 0, collectiveBitmapCol = 0;

          for (int row = 0; row < deltaHeight; row++) {
            for (int col = 0; col < bytesPerRow; col++) {
              if (col == (bytesPerRow - 1)) { // this is the last
                // byte in the row
                short currentByte = logicalMap[row][col];
                for (int bitPointer = 7; bitPointer >= padding; bitPointer--) {
                  short mask = (short) (1 << bitPointer);
                  int bit = (currentByte & mask) >> bitPointer;
                 
                  collectiveBitmap.setPixel(collectiveBitmapCol, collectiveBitmapRow, bit);
                  collectiveBitmapCol++;
                }
                collectiveBitmapRow++;
                collectiveBitmapCol = 0;
              } else {
                short currentByte = logicalMap[row][col];
                for (int bitPointer = 7; bitPointer >= 0; bitPointer--) {
                  short mask = (short) (1 << bitPointer);
                  int bit = (currentByte & mask) >> bitPointer;
                 
                  collectiveBitmap.setPixel(collectiveBitmapCol, collectiveBitmapRow, bit);
                  collectiveBitmapCol++;
                }
              }
            }
          }

        } else {
          collectiveBitmap.readBitmap(true, 0, false, false, null, null, null, bmSize);
        }

        int x = 0;
        while (j < i){
          bitmaps[numberOfInputSymbols + j] = collectiveBitmap.getSlice(x, 0, deltaWidths[j], deltaHeight);
          x += deltaWidths[j];
         
          j++;
        }
      }
View Full Code Here

Examples of org.jpedal.jbig2.image.JBIG2Bitmap

    genericBAdaptiveTemplateX[3] = -2;
    genericBAdaptiveTemplateY[3] = -2;

    size = grayMax + 1;

    JBIG2Bitmap bitmap = new JBIG2Bitmap(size * width, height, arithmeticDecoder, huffmanDecoder, mmrDecoder);
    bitmap.clear(0);
    bitmap.readBitmap(useMMR, template, false, false, null, genericBAdaptiveTemplateX, genericBAdaptiveTemplateY, segmentHeader.getSegmentDataLength() - 7);

    JBIG2Bitmap bitmaps[] = new JBIG2Bitmap[size];

    int x = 0;
    for (int i = 0; i < size; i++) {
      bitmaps[i] = bitmap.getSlice(x, 0, width, height);
      x += width;
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.