java.lang.Object
javax.imageio.stream.ImageInputStreamImpl
javax.imageio.stream.ImageOutputStreamImpl
org.monte.media.io.ByteArrayImageOutputStream
- All Implemented Interfaces:
Closeable,DataInput,DataOutput,AutoCloseable,ImageInputStream,ImageOutputStream
This class implements an image output stream in which the data is
written into a byte array. The buffer automatically grows as data
is written to it.
The data can be retrieved using
toByteArray(), toImageOutputStream()
and toOutputStream().
Closing a ByteArrayImageOutputStream has no effect. The methods in
this class can be called after the stream has been closed without
generating an IOException.
- Author:
- Werner Randelshofer
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected byte[]An array of bytes that was provided by the creator of the stream.protected intThe index one greater than the last valid character in the input stream buffer.Fields inherited from class javax.imageio.stream.ImageInputStreamImpl
bitOffset, byteOrder, flushedPos, streamPos -
Constructor Summary
ConstructorsConstructorDescriptionByteArrayImageOutputStream(byte[] buf) ByteArrayImageOutputStream(byte[] buf, int offset, int length, ByteOrder byteOrder) ByteArrayImageOutputStream(byte[] buf, ByteOrder byteOrder) ByteArrayImageOutputStream(int initialCapacity) ByteArrayImageOutputStream(ByteOrder byteOrder) -
Method Summary
Modifier and TypeMethodDescriptionintReturns the number of remaining bytes that can be read (or skipped over) from this input stream.voidclear()Resets thecountfield of this byte array output stream to zero, so that all currently accumulated output in the output stream is discarded.voidclose()Closing aByteArrayInputStreamhas no effect.byte[]Returns the internally used byte buffer.longlonglength()intread()Reads the next byte of data from this input stream.intread(byte[] b, int off, int len) Reads up tolenbytes of data into an array of bytes from this input stream.voidseek(long pos) longskip(long n) Skipsnbytes of input from this input stream.byte[]Creates a newly allocated byte array.voidWrites the contents of the byte array into the specified image output stream.voidWrites the contents of the byte array into the specified output stream.voidwrite(byte[] b) Writes the specified byte array to this output stream.voidwrite(byte[] b, int off, int len) Writeslenbytes from the specified byte array starting at offsetoffto this output stream.voidwrite(int b) Writes the specified byte to this output stream.Methods inherited from class javax.imageio.stream.ImageOutputStreamImpl
flushBits, writeBit, writeBits, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeChars, writeDouble, writeDoubles, writeFloat, writeFloats, writeInt, writeInts, writeLong, writeLongs, writeShort, writeShorts, writeUTFMethods inherited from class javax.imageio.stream.ImageInputStreamImpl
checkClosed, finalize, flush, flushBefore, getBitOffset, getByteOrder, getFlushedPosition, isCached, isCachedFile, isCachedMemory, mark, read, readBit, readBits, readBoolean, readByte, readBytes, readChar, readDouble, readFloat, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readInt, readLine, readLong, readShort, readUnsignedByte, readUnsignedInt, readUnsignedShort, readUTF, reset, setBitOffset, setByteOrder, skipBytes, skipBytesMethods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface javax.imageio.stream.ImageInputStream
flush, getBitOffset, getByteOrder, getFlushedPosition, isCached, isCachedFile, isCachedMemory, mark, read, readBit, readBits, readBoolean, readByte, readBytes, readChar, readDouble, readFloat, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readInt, readLine, readLong, readShort, readUnsignedByte, readUnsignedInt, readUnsignedShort, readUTF, reset, setBitOffset, setByteOrder, skipBytes, skipBytesMethods inherited from interface javax.imageio.stream.ImageOutputStream
flushBefore
-
Field Details
-
buf
protected byte[] bufAn array of bytes that was provided by the creator of the stream. Elementsbuf[0]throughbuf[count-1]are the only bytes that can ever be read from the stream; elementbuf[streamPos]is the next byte to be read. -
count
protected int countThe index one greater than the last valid character in the input stream buffer. This value should always be nonnegative and not larger than the length ofbuf. It is one greater than the position of the last byte withinbufthat can ever be read from the input stream buffer.
-
-
Constructor Details
-
ByteArrayImageOutputStream
public ByteArrayImageOutputStream() -
ByteArrayImageOutputStream
public ByteArrayImageOutputStream(int initialCapacity) -
ByteArrayImageOutputStream
public ByteArrayImageOutputStream(byte[] buf) -
ByteArrayImageOutputStream
-
ByteArrayImageOutputStream
-
ByteArrayImageOutputStream
-
-
Method Details
-
read
Reads the next byte of data from this input stream. The value byte is returned as anintin the range0to255. If no byte is available because the end of the stream has been reached, the value-1is returned.This
readmethod cannot block.- Specified by:
readin interfaceImageInputStream- Specified by:
readin classImageInputStreamImpl- Returns:
- the next byte of data, or
-1if the end of the stream has been reached. - Throws:
IOException
-
read
Reads up tolenbytes of data into an array of bytes from this input stream. IfstreamPosequalscount, then-1is returned to indicate end of file. Otherwise, the numberkof bytes read is equal to the smaller oflenandcount-streamPos. Ifkis positive, then bytesbuf[streamPos]throughbuf[streamPos+k-1]are copied intob[off]throughb[off+k-1]in the manner performed bySystem.arraycopy. The valuekis added intostreamPosandkis returned.This
readmethod cannot block.- Specified by:
readin interfaceImageInputStream- Specified by:
readin classImageInputStreamImpl- Parameters:
b- the buffer into which the data is read.off- the start offset in the destination arrayblen- the maximum number of bytes read.- Returns:
- the total number of bytes read into the buffer, or
-1if there is no more data because the end of the stream has been reached. - Throws:
NullPointerException- Ifbisnull.IndexOutOfBoundsException- Ifoffis negative,lenis negative, orlenis greater thanb.length - offIOException
-
skip
public long skip(long n) Skipsnbytes of input from this input stream. Fewer bytes might be skipped if the end of the input stream is reached. The actual numberkof bytes to be skipped is equal to the smaller ofnandcount-streamPos. The valuekis added intostreamPosandkis returned.- Parameters:
n- the number of bytes to be skipped.- Returns:
- the actual number of bytes skipped.
-
available
public int available()Returns the number of remaining bytes that can be read (or skipped over) from this input stream.The value returned is
count - streamPos, which is the number of bytes remaining to be read from the input buffer.- Returns:
- the number of remaining bytes that can be read (or skipped over) from this input stream without blocking.
-
close
public void close()Closing aByteArrayInputStreamhas no effect. The methods in this class can be called after the stream has been closed without generating anIOException.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceImageInputStream- Overrides:
closein classImageInputStreamImpl
-
getStreamPosition
- Specified by:
getStreamPositionin interfaceImageInputStream- Overrides:
getStreamPositionin classImageInputStreamImpl- Throws:
IOException
-
seek
- Specified by:
seekin interfaceImageInputStream- Overrides:
seekin classImageInputStreamImpl- Throws:
IOException
-
write
Writes the specified byte to this output stream.- Specified by:
writein interfaceDataOutput- Specified by:
writein interfaceImageOutputStream- Specified by:
writein classImageOutputStreamImpl- Parameters:
b- the byte to be written.- Throws:
IOException
-
write
Writes the specified byte array to this output stream.- Specified by:
writein interfaceDataOutput- Specified by:
writein interfaceImageOutputStream- Overrides:
writein classImageOutputStreamImpl- Parameters:
b- the data.- Throws:
IOException
-
write
Writeslenbytes from the specified byte array starting at offsetoffto this output stream.- Specified by:
writein interfaceDataOutput- Specified by:
writein interfaceImageOutputStream- Specified by:
writein classImageOutputStreamImpl- Parameters:
b- the data.off- the start offset in the data.len- the number of bytes to write.- Throws:
IOException
-
toOutputStream
Writes the contents of the byte array into the specified output stream.- Parameters:
out-- Throws:
IOException
-
toImageOutputStream
Writes the contents of the byte array into the specified image output stream.- Parameters:
out-- Throws:
IOException
-
toByteArray
public byte[] toByteArray()Creates a newly allocated byte array. Its size is the current size of this output stream and the valid contents of the buffer have been copied into it.- Returns:
- the current contents of this output stream, as a byte array.
- See Also:
-
getBuffer
public byte[] getBuffer()Returns the internally used byte buffer. -
length
public long length()- Specified by:
lengthin interfaceImageInputStream- Overrides:
lengthin classImageInputStreamImpl
-
clear
public void clear()Resets thecountfield of this byte array output stream to zero, so that all currently accumulated output in the output stream is discarded. The output stream can be used again, reusing the already allocated buffer space.- See Also:
-