private InputStream fakeBMPHeader(final QuickTime.ImageDesc pDescription) throws IOException { int bmpHeaderSize = 14; int dibHeaderSize = 12; // 12: OS/2 V1 ByteArrayOutputStream out = new FastByteArrayOutputStream(bmpHeaderSize + dibHeaderSize); LittleEndianDataOutputStream stream = new LittleEndianDataOutputStream(out); // BMP header stream.writeByte('B'); stream.writeByte('M'); stream.writeInt(pDescription.dataSize + bmpHeaderSize + dibHeaderSize); // Data size + BMP header + DIB header stream.writeShort(0x0); // Reserved stream.writeShort(0x0); // Reserved stream.writeInt(bmpHeaderSize + dibHeaderSize); // Image offset // DIB header stream.writeInt(dibHeaderSize); // DIB header size stream.writeShort(pDescription.width); stream.writeShort(pDescription.height); stream.writeShort(1); // Planes, only legal value: 1 stream.writeShort(pDescription.depth); // Bit depth return new ByteArrayInputStream(out.toByteArray()); } }
private InputStream fakeBMPHeader(final QuickTime.ImageDesc pDescription) throws IOException { int bmpHeaderSize = 14; int dibHeaderSize = 12; // 12: OS/2 V1 ByteArrayOutputStream out = new FastByteArrayOutputStream(bmpHeaderSize + dibHeaderSize); LittleEndianDataOutputStream stream = new LittleEndianDataOutputStream(out); // BMP header stream.writeByte('B'); stream.writeByte('M'); stream.writeInt(pDescription.dataSize + bmpHeaderSize + dibHeaderSize); // Data size + BMP header + DIB header stream.writeShort(0x0); // Reserved stream.writeShort(0x0); // Reserved stream.writeInt(bmpHeaderSize + dibHeaderSize); // Image offset // DIB header stream.writeInt(dibHeaderSize); // DIB header size stream.writeShort(pDescription.width); stream.writeShort(pDescription.height); stream.writeShort(1); // Planes, only legal value: 1 stream.writeShort(pDescription.depth); // Bit depth return new ByteArrayInputStream(out.toByteArray()); } }
private InputStream fakeBMPHeader(final QuickTime.ImageDesc pDescription) throws IOException { int bmpHeaderSize = 14; int dibHeaderSize = 12; // 12: OS/2 V1 ByteArrayOutputStream out = new FastByteArrayOutputStream(bmpHeaderSize + dibHeaderSize); LittleEndianDataOutputStream stream = new LittleEndianDataOutputStream(out); // BMP header stream.writeByte('B'); stream.writeByte('M'); stream.writeInt(pDescription.dataSize + bmpHeaderSize + dibHeaderSize); // Data size + BMP header + DIB header stream.writeShort(0x0); // Reserved stream.writeShort(0x0); // Reserved stream.writeInt(bmpHeaderSize + dibHeaderSize); // Image offset // DIB header stream.writeInt(dibHeaderSize); // DIB header size stream.writeShort(pDescription.width); stream.writeShort(pDescription.height); stream.writeShort(1); // Planes, only legal value: 1 stream.writeShort(pDescription.depth); // Bit depth return new ByteArrayInputStream(out.toByteArray()); } }