Examples of BinaryOutputStream


Examples of org.apache.sanselan.common.BinaryOutputStream

    {
        public byte[] generateBitmap(int foreground, int background, int paletteSize)
                throws IOException, ImageWriteException
        {
            ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream();
            BinaryOutputStream bos = new BinaryOutputStream(byteArrayStream,
                    BinaryOutputStream.BYTE_ORDER_LITTLE_ENDIAN);
            // Palette
            bos.write3Bytes(background);
            bos.write(0);
            bos.write3Bytes(foreground);
            bos.write(0);
            for (int i = 2; i < paletteSize; i++)
                bos.write4Bytes(0);
            // Image
            for (int y = 15; y >= 0; y--)
            {
                for (int x = 0; x < 16; x += 8)
                {
                    bos.write(
                        ((0x1 & image[y][x]) << 7) |
                        ((0x1 & image[y][x+1]) << 6) |
                        ((0x1 & image[y][x+2]) << 5) |
                        ((0x1 & image[y][x+3]) << 4) |
                        ((0x1 & image[y][x+4]) << 3) |
                        ((0x1 & image[y][x+5]) << 2) |
                        ((0x1 & image[y][x+6]) << 1) |
                        ((0x1 & image[y][x+7]) << 0));
                }
                // Pad to multiple of 32 bytes
                bos.write(0);
                bos.write(0);
            }
            // Mask
            for (int y = image.length - 1; y >= 0; y--)
            {
                bos.write(0);
                bos.write(0);
                // Pad to 4 bytes:
                bos.write(0);
                bos.write(0);
            }
            bos.flush();
            return byteArrayStream.toByteArray();
        }
View Full Code Here

Examples of org.apache.sanselan.common.BinaryOutputStream

    {
        public byte[] generateBitmap(int foreground, int background, int paletteSize)
                throws IOException, ImageWriteException
        {
            ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream();
            BinaryOutputStream bos = new BinaryOutputStream(byteArrayStream,
                    BinaryOutputStream.BYTE_ORDER_LITTLE_ENDIAN);
            // Palette
            bos.write3Bytes(background);
            bos.write(0);
            bos.write3Bytes(foreground);
            bos.write(0);
            for (int i = 2; i < paletteSize; i++)
                bos.write4Bytes(0);
            // Image
            for (int y = 15; y >= 0; y--)
            {
                for (int x = 0; x < 16; x += 2)
                {
                    bos.write(((0xf & image[y][x]) << 4) |
                        (0xf & image[y][x+1]));
                }
            }
            // Mask
            for (int y = image.length - 1; y >= 0; y--)
            {
                bos.write(0);
                bos.write(0);
                // Pad to 4 bytes:
                bos.write(0);
                bos.write(0);
            }
            bos.flush();
            return byteArrayStream.toByteArray();
        }
View Full Code Here

Examples of org.apache.sanselan.common.BinaryOutputStream

      imageType = IcnsType.ICNS_128x128_32BIT_IMAGE;
    else
      throw new ImageWriteException("Invalid/unsupported source width " +
          src.getWidth() + " and height " + src.getHeight());

    BinaryOutputStream bos = new BinaryOutputStream(os, BYTE_ORDER_BIG_ENDIAN);
    bos.write4Bytes(ICNS_MAGIC);
    bos.write4Bytes(4 + 4 + 4 + 4 + 4*imageType.getWidth()*imageType.getHeight() +
        4 + 4 + imageType.getWidth()*imageType.getHeight());

    bos.write4Bytes(imageType.getType());
    bos.write4Bytes(4 + 4 + 4*imageType.getWidth()*imageType.getHeight());
    for (int y = 0; y < src.getHeight(); y++)
    {
      for (int x = 0; x < src.getWidth(); x++)
      {
        int argb = src.getRGB(x, y);
        bos.write(0);
        bos.write(argb >> 16);
        bos.write(argb >> 8);
        bos.write(argb);
      }
    }

    IcnsType maskType = IcnsType.find8BPPMaskType(imageType);
    bos.write4Bytes(maskType.getType());
    bos.write4Bytes(4 + 4 + imageType.getWidth()*imageType.getWidth());
    for (int y = 0; y < src.getHeight(); y++)
    {
      for (int x = 0; x < src.getWidth(); x++)
      {
        int argb = src.getRGB(x, y);
        bos.write(argb >> 24);
      }
    }
  }
View Full Code Here

Examples of org.apache.sanselan.common.BinaryOutputStream

            writer = new BMPWriterRGB();
        else
            writer = new BMPWriterPalette(palette);

        byte imagedata[] = writer.getImageData(src);
        BinaryOutputStream bos = new BinaryOutputStream(os, BYTE_ORDER_INTEL);

        {
            // write BitmapFileHeader
            os.write(0x42); // B, Windows 3.1x, 95, NT, Bitmap
            os.write(0x4d); // M

            int filesize = BITMAP_FILE_HEADER_SIZE + BITMAP_INFO_HEADER_SIZE + // header
                    // size
                    4 * writer.getPaletteSize() + // palette size in bytes
                    imagedata.length;
            bos.write4Bytes(filesize);

            bos.write4Bytes(0); // reserved
            bos.write4Bytes(BITMAP_FILE_HEADER_SIZE + BITMAP_INFO_HEADER_SIZE
                    + 4 * writer.getPaletteSize()); // Bitmap Data Offset
        }

        int width = src.getWidth();
        int height = src.getHeight();

        { // write BitmapInfoHeader
            bos.write4Bytes(BITMAP_INFO_HEADER_SIZE); // Bitmap Info Header Size
            bos.write4Bytes(width); // width
            bos.write4Bytes(height); // height
            bos.write2Bytes(1); // Number of Planes
            bos.write2Bytes(writer.getBitsPerPixel()); // Bits Per Pixel

            bos.write4Bytes(BI_RGB); // Compression
            bos.write4Bytes(imagedata.length); // Bitmap Data Size
            bos.write4Bytes(0); // HResolution
            bos.write4Bytes(0); // VResolution
            if (palette == null)
                bos.write4Bytes(0); // Colors
            else
                bos.write4Bytes(palette.length()); // Colors
            bos.write4Bytes(0); // Important Colors
            // bos.write_4_bytes(0); // Compression
        }

        { // write Palette
            writer.writePalette(bos);
        }
        { // write Image Data
            bos.writeByteArray(imagedata);
        }
    }
View Full Code Here

Examples of org.apache.sanselan.common.BinaryOutputStream

        if (palette2 == null)
            throw new ImageWriteException(
                    "Gif: can't write images with more than 256 colors");
        int palette_size = palette2.length() + (hasAlpha ? 1 : 0);

        BinaryOutputStream bos = new BinaryOutputStream(os, BYTE_ORDER_LSB);

        {
            // write Header
            os.write(0x47); // G magic numbers
            os.write(0x49); // I
            os.write(0x46); // F

            os.write(0x38); // 8 version magic numbers
            os.write(0x39); // 9
            os.write(0x61); // a

            // Logical Screen Descriptor.

            bos.write2Bytes(width);
            bos.write2Bytes(height);

            int colorTableScaleLessOne = (palette_size > 128) ? 7
                    : (palette_size > 64) ? 6 : (palette_size > 32) ? 5
                            : (palette_size > 16) ? 4 : (palette_size > 8) ? 3
                                    : (palette_size > 4) ? 2
                                            : (palette_size > 2) ? 1 : 0;

            int colorTableSizeInFormat = 1 << (colorTableScaleLessOne + 1);
            int actual_size = 3 * simple_pow(2, colorTableScaleLessOne + 1);
            {
                byte colorResolution = (byte) colorTableScaleLessOne; // TODO:

                boolean globalColorTableFlag = false;
                boolean sortFlag = false;
                int globalColorTableFlagMask = 1 << 7;
                int sortFlagMask = 8;
                int sizeOfGlobalColorTable = 0;

                int packedFields = ((globalColorTableFlag ? globalColorTableFlagMask
                        : 0)
                        | (sortFlag ? sortFlagMask : 0)
                        | ((7 & colorResolution) << 4) | (7 & sizeOfGlobalColorTable));
                bos.write(packedFields); // one byte
            }
            {
                byte BackgroundColorIndex = 0;
                bos.write(BackgroundColorIndex);
            }
            {
                byte PixelAspectRatio = 0;
                bos.write(PixelAspectRatio);
            }

            { // write Global Color Table.

            }

            { // ALWAYS write GraphicControlExtension
                bos.write(EXTENSION_CODE);
                bos.write((byte) 0xf9);
                // bos.write(0xff & (kGraphicControlExtension >> 8));
                // bos.write(0xff & (kGraphicControlExtension >> 0));

                bos.write((byte) 4); // block size;
                int packedFields = hasAlpha ? 1 : 0; // transparency flag
                bos.write((byte) packedFields);
                bos.write((byte) 0); // Delay Time
                bos.write((byte) 0); // Delay Time
                bos.write((byte) (hasAlpha ? palette2.length() : 0)); // Transparent
                // Color
                // Index
                bos.write((byte) 0); // terminator
            }

            if (null != xmpXml)
            {
                bos.write(EXTENSION_CODE);
                bos.write(APPLICATION_EXTENSION_LABEL);

                bos.write(XMP_APPLICATION_ID_AND_AUTH_CODE.length); // 0x0B
                bos.write(XMP_APPLICATION_ID_AND_AUTH_CODE);

                byte xmpXmlBytes[] = xmpXml.getBytes("utf-8");
                bos.write(xmpXmlBytes);

                // write "magic trailer"
                for (int magic = 0; magic <= 0xff; magic++)
                    bos.write(0xff - magic);

                bos.write((byte) 0); // terminator

            }

            { // Image Descriptor.
                bos.write(IMAGE_SEPARATOR);
                bos.write2Bytes(0); // Image Left Position
                bos.write2Bytes(0); // Image Top Position
                bos.write2Bytes(width); // Image Width
                bos.write2Bytes(height); // Image Height

                {
                    boolean LocalColorTableFlag = true;
                    // boolean LocalColorTableFlag = false;
                    boolean InterlaceFlag = false;
                    boolean SortFlag = false;
                    int SizeOfLocalColorTable = colorTableScaleLessOne;

                    // int SizeOfLocalColorTable = 0;

                    int PackedFields = ((LocalColorTableFlag ? LOCAL_COLOR_TABLE_FLAG_MASK
                            : 0)
                            | (InterlaceFlag ? INTERLACE_FLAG_MASK : 0)
                            | (SortFlag ? SORT_FLAG_MASK : 0) | (7 & SizeOfLocalColorTable));
                    bos.write(PackedFields); // one byte
                }
            }

            { // write Local Color Table.
                for (int i = 0; i < colorTableSizeInFormat; i++)
                {
                    if (i < palette2.length())
                    {
                        int rgb = palette2.getEntry(i);

                        int red = 0xff & (rgb >> 16);
                        int green = 0xff & (rgb >> 8);
                        int blue = 0xff & (rgb >> 0);

                        bos.write(red);
                        bos.write(green);
                        bos.write(blue);
                    } else
                    {
                        bos.write(0);
                        bos.write(0);
                        bos.write(0);
                    }
                }
            }

            { // get Image Data.
                int image_data_total = 0;

                int LZWMinimumCodeSize = colorTableScaleLessOne + 1;
//                LZWMinimumCodeSize = Math.max(8, LZWMinimumCodeSize);
                if (LZWMinimumCodeSize < 2)
                    LZWMinimumCodeSize = 2;

                // TODO:
                // make
                // better
                // choice
                // here.
                bos.write(LZWMinimumCodeSize);

                MyLZWCompressor compressor = new MyLZWCompressor(
                        LZWMinimumCodeSize, BYTE_ORDER_LSB, false); // GIF
                // Mode);

                byte imagedata[] = new byte[width * height];
                for (int y = 0; y < height; y++)
                {
                    for (int x = 0; x < width; x++)
                    {
                        int argb = src.getRGB(x, y);
                        int rgb = 0xffffff & argb;
                        int index;

                        if (hasAlpha)
                        {
                            int alpha = 0xff & (argb >> 24);
                            final int alphaThreshold = 255;
                            if (alpha < alphaThreshold)
                                index = palette2.length(); // is transparent
                            else
                                index = palette2.getPaletteIndex(rgb);
                        } else
                        {
                            index = palette2.getPaletteIndex(rgb);
                        }

                        imagedata[y * width + x] = (byte) index;
                    }
                }

                byte compressed[] = compressor.compress(imagedata);
                writeAsSubBlocks(bos, compressed);
                image_data_total += compressed.length;
            }

            // palette2.dump();

            bos.write(TERMINATOR_BYTE);
        }

        bos.close();
        os.close();
    }
View Full Code Here

Examples of org.apache.sanselan.common.BinaryOutputStream

    public void writeImage(BufferedImage src, OutputStream os)
            throws ImageWriteException, IOException
    {
        final PaletteFactory paletteFactory = new PaletteFactory();
        final SimplePalette palette = paletteFactory.makePaletteSimple(src, 256);
        BinaryOutputStream bos = new BinaryOutputStream(os, BinaryOutputStream.BYTE_ORDER_INTEL);
        if (palette == null || bitDepth == 24 || bitDepth == 32)
        {
            if (bitDepth == 32)
                write32BppPCX(src, bos);
            else
View Full Code Here

Examples of org.apache.sanselan.common.BinaryOutputStream

            throw new ImageWriteException("Unknown parameter: " + firstKey);
        }

        final int headerSize = 4 + 1024 * 4;

        BinaryOutputStream bos = new BinaryOutputStream(os, BinaryOutputStream.BYTE_ORDER_LITTLE_ENDIAN);
        bos.write4Bytes(DcxHeader.DCX_ID);
        // Some apps may need a full 1024 entry table
        bos.write4Bytes(headerSize);
        for (int i = 0; i < 1023; i++)
            bos.write4Bytes(0);
        PcxImageParser pcxImageParser = new PcxImageParser();
        pcxImageParser.writeImage(src, bos, pcxParams);
    }
View Full Code Here

Examples of org.apache.sanselan.common.BinaryOutputStream

    updateOffsetsStep(outputItems);

    outputSummary.updateOffsets(byteOrder);

    BinaryOutputStream bos = new BinaryOutputStream(os, byteOrder);

    writeStep(bos, outputItems);

  }
View Full Code Here

Examples of org.apache.sanselan.common.BinaryOutputStream

      writer = new BMPWriterRGB();
    else
      writer = new BMPWriterPalette(palette);

    byte imagedata[] = writer.getImageData(src);
    BinaryOutputStream bos = new BinaryOutputStream(os, BYTE_ORDER_INTEL);

    {
      // write BitmapFileHeader
      os.write(0x42); // B, Windows 3.1x, 95, NT, Bitmap
      os.write(0x4d); // M

      int filesize = BITMAP_FILE_HEADER_SIZE + BITMAP_INFO_HEADER_SIZE + // header size
          4 * writer.getPaletteSize() + //palette size in bytes
          imagedata.length;
      bos.write4Bytes(filesize);

      bos.write4Bytes(0); // reserved
      bos.write4Bytes(BITMAP_FILE_HEADER_SIZE + BITMAP_INFO_HEADER_SIZE
          + 4 * writer.getPaletteSize()); // Bitmap Data Offset
    }

    int width = src.getWidth();
    int height = src.getHeight();

    { // write BitmapInfoHeader
      bos.write4Bytes(BITMAP_INFO_HEADER_SIZE); // Bitmap Info Header Size
      bos.write4Bytes(width); // width
      bos.write4Bytes(height); // height
      bos.write2Bytes(1); // Number of Planes
      bos.write2Bytes(writer.getBitsPerPixel()); // Bits Per Pixel

      bos.write4Bytes(0); // Compression
      bos.write4Bytes(imagedata.length); // Bitmap Data Size
      bos.write4Bytes(0); // HResolution
      bos.write4Bytes(0); // VResolution
      bos.write4Bytes(0); // Colors
      bos.write4Bytes(0); // Important Colors
      //      bos.write_4_bytes(0); // Compression
    }

    { // write Palette
      writer.writePalette(bos);
    }
    { // write Image Data
      bos.writeByteArray(imagedata);
    }
  }
View Full Code Here

Examples of org.apache.sanselan.common.BinaryOutputStream

    if (palette2 == null)
      throw new ImageWriteException(
          "Gif: can't write images with more than 256 colors");
    int palette_size = palette2.length() + (hasAlpha ? 1 : 0);

    BinaryOutputStream bos = new BinaryOutputStream(os, BYTE_ORDER_LSB);

    {
      // write Header
      os.write(0x47); // G magic numbers
      os.write(0x49); // I
      os.write(0x46); // F

      os.write(0x38); // 8 version magic numbers
      os.write(0x39); // 9
      os.write(0x61); // a

      // Logical Screen Descriptor.

      bos.write2Bytes(width);
      bos.write2Bytes(height);

      int colorTableScaleLessOne = (palette_size > 128) ? 7
          : (palette_size > 64) ? 6 : (palette_size > 32) ? 5
              : (palette_size > 16) ? 4 : (palette_size > 8) ? 3
                  : (palette_size > 4) ? 2
                      : (palette_size > 2) ? 1 : 0;

      int colorTableSizeInFormat = 1 << (colorTableScaleLessOne + 1);
      int actual_size = 3 * simple_pow(2, colorTableScaleLessOne + 1);
      {
        byte colorResolution = (byte) colorTableScaleLessOne; // TODO:

        boolean globalColorTableFlag = false;
        boolean sortFlag = false;
        int globalColorTableFlagMask = 1 << 7;
        int sortFlagMask = 8;
        int sizeOfGlobalColorTable = 0;

        int packedFields = ((globalColorTableFlag ? globalColorTableFlagMask
            : 0)
            | (sortFlag ? sortFlagMask : 0)
            | ((7 & colorResolution) << 4) | (7 & sizeOfGlobalColorTable));
        bos.write(packedFields); // one byte
      }
      {
        byte BackgroundColorIndex = 0;
        bos.write(BackgroundColorIndex);
      }
      {
        byte PixelAspectRatio = 0;
        bos.write(PixelAspectRatio);
      }

      { // write Global Color Table.

      }

      if (hasAlpha)
      { // write GraphicControlExtension
        bos.write((byte) 0x21);
        bos.write((byte) 0xf9);
        // bos.write(0xff & (kGraphicControlExtension >> 8));
        // bos.write(0xff & (kGraphicControlExtension >> 0));

        bos.write((byte) 4); // block size;
        int fPackedFields = hasAlpha ? 1 : 0; // transparency flag
        bos.write((byte) fPackedFields);
        bos.write((byte) 0); // Delay Time
        bos.write((byte) 0); // Delay Time
        bos.write((byte) (hasAlpha ? palette2.length() : 0)); // Transparent
        // Color
        // Index
        bos.write((byte) 0); // terminator
      }

      { // Image Descriptor.
        bos.write(IMAGE_SEPARATOR);
        bos.write2Bytes(0); // Image Left Position
        bos.write2Bytes(0); // Image Top Position
        bos.write2Bytes(width); // Image Width
        bos.write2Bytes(height); // Image Height

        {
          boolean LocalColorTableFlag = true;
          // boolean LocalColorTableFlag = false;
          boolean InterlaceFlag = false;
          boolean SortFlag = false;
          int SizeOfLocalColorTable = colorTableScaleLessOne;

          // int SizeOfLocalColorTable = 0;

          int PackedFields = ((LocalColorTableFlag ? LOCAL_COLOR_TABLE_FLAG_MASK
              : 0)
              | (InterlaceFlag ? INTERLACE_FLAG_MASK : 0)
              | (SortFlag ? SORT_FLAG_MASK : 0) | (7 & SizeOfLocalColorTable));
          bos.write(PackedFields); // one byte
        }
      }

      { // write Local Color Table.
        for (int i = 0; i < colorTableSizeInFormat; i++)
        {
          if (i < palette2.length())
          {
            int rgb = palette2.getEntry(i);

            int red = 0xff & (rgb >> 16);
            int green = 0xff & (rgb >> 8);
            int blue = 0xff & (rgb >> 0);

            bos.write(red);
            bos.write(green);
            bos.write(blue);
          } else
          {
            bos.write(0);
            bos.write(0);
            bos.write(0);
          }
        }
      }

      { // get Image Data.
        int image_data_total = 0;

        int LZWMinimumCodeSize = colorTableScaleLessOne + 1;
        // TODO:
        // make
        // better
        // choice
        // here.
        bos.write(LZWMinimumCodeSize);

        MyLZWCompressor compressor = new MyLZWCompressor(
            LZWMinimumCodeSize, BYTE_ORDER_LSB, false); // GIF
        // Mode);

        byte imagedata[] = new byte[width * height];
        for (int y = 0; y < height; y++)
        {
          for (int x = 0; x < width; x++)
          {
            int argb = src.getRGB(x, y);
            int rgb = 0xffffff & argb;
            int index;

            if (hasAlpha)
            {
              int alpha = 0xff & (argb >> 24);
              final int alphaThreshold = 255;
              if (alpha < alphaThreshold)
                index = palette2.length(); // is transparent
              else
                index = palette2.getPaletteIndex(rgb);
            } else
            {
              index = palette2.getPaletteIndex(rgb);
            }

            imagedata[y * width + x] = (byte) index;
          }
        }

        byte compressed[] = compressor.compress(imagedata);
        writeAsSubBlocks(bos, compressed);
        image_data_total += compressed.length;
      }

      // palette2.dump();

      bos.write(TERMINATOR_BYTE);
    }

    bos.close();
    os.close();
  }
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.