3 Imager::IO - Imager's io_layer object.
7 # Imager supplies Imager::IO objects to various callbacks
10 my $count = $IO->write($data);
11 my $count = $IO->read($buffer, $max_count);
12 my $position = $IO->seek($offset, $whence);
13 my $status = $IO->close;
17 Imager uses an abstraction when dealing with image files to allow the
18 same code to work with disk files, in memory data and callbacks.
20 If you're writing an Imager file handler your code will be passed an
21 Imager::IO object to write to or read from.
23 X<UTF-8>X<Unicode>Note that Imager::IO can only work with collections of bytes -
24 if you need to read UTF-8 data you will need to read the bytes and
25 decode them. If you want to write UTF-8 data you will need to encode
26 your characters to bytes and write the bytes.
34 Create a new I/O layer based on a file descriptor.
36 my $io = Imager::IO->new(fileno($fh));
38 =item new_buffer($data)
40 Create a new I/O layer based on a memory buffer.
42 Buffer I/O layers are read only.
44 C<$data> can either a simple octet string, or a reference to an octet
45 string. If C<$data> contains characters with a code point above
46 C<0xFF> an exception will be thrown.
48 =item new_cb($writecb, $readcb, $seekcb, $closecb)
50 Create a new I/O layer based on callbacks. See
51 L<Imager::Files/"I/O Callbacks"> for details on the behavior of
56 Create a new I/O layer based on a perl file handle.
60 Create a new C<bufchain> based I/O layer. This accumulates the file
61 data as a chain of buffers starting from an empty stream.
63 Use the L</slurp()> method to retrieve the accumulated content into a
68 =head1 BUFFERED I/O METHODS
70 These methods use buffered I/O to improve performance unless you call
71 set_buffered() to disable buffering.
73 Prior to Imager 0.86 the write and read methods performed raw I/O.
79 Call to write to the file. Returns the number of bytes written. The
80 data provided may contain only characters \x00 to \xFF - characters
81 outside this range will cause this method to croak().
83 If you supply a UTF-8 flagged string it will be converted to a byte
84 string, which may have a performance impact.
86 Returns -1 on error, though in most cases if the result of the write
87 isn't the number of bytes supplied you'll want to treat it as an error
90 =item read($buffer, $size)
93 my $count = $io->read($buffer, $max_bytes);
95 Reads up to I<$max_bytes> bytes from the current position in the file
96 and stores them in I<$buffer>. Returns the number of bytes read on
97 success or an empty list on failure. Note that a read of zero bytes
98 is B<not> a failure, this indicates end of file.
102 my $buffer = $io->read2($max_bytes);
104 An alternative interface to read, that might be simpler to use in some
107 Returns the data read or an empty list. At end of file the data read
108 will be an empty string.
110 =item seek($offset, $whence)
112 my $new_position = $io->seek($offset, $whence);
114 Seek to a new position in the file. Possible values for I<$whence> are:
120 C<SEEK_SET> - I<$offset> is the new position in the file.
124 C<SEEK_CUR> - I<$offset> is the offset from the current position in
129 C<SEEK_END> - I<$offset> is the offset relative to the end of the
134 Note that seeking past the end of the file may or may not result in an
137 Any buffered output will be flushed, if flushing fails, seek() will
140 Returns the new position in the file, or -1 on error.
144 Return the next byte from the stream.
146 Returns the ordinal of the byte or -1 on error or end of file.
148 while ((my $c = $io->getc) != -1) {
154 =item gets($max_size)
156 =item gets($max_size, $end_of_line)
158 Returns the next line of input from the stream, as terminated by
161 The default C<max_size> is 8192.
163 The default C<end_of_line> is C<ord "\n">.
165 Returns nothing if the stream is in error or at end of file.
167 Returns the line as a string, including the line terminator (if one
168 was found) on success.
170 while (defined(my $line = $io->gets)) {
171 # do something with $line
176 Return the buffered next character from the stream, loading the buffer
179 For an unbuffered stream a buffer will be setup and loaded with a
182 Returns the ordinal of the byte or -1 on error or end of file.
188 Returns up to the next C<size> bytes from the file as a string.
190 Only up to the stream buffer size bytes (currently 8192) can be peeked.
192 This method ignores the buffering state of the stream.
194 Returns nothing on EOF.
196 my $s = $io->peekn(4);
197 if ($s =~ /^(II|MM)\*\0/) {
203 Write a single character to the stream.
205 Returns C<code> on success, or -1 on failure.
209 my $result = $io->close;
211 Call when you're done with the file. If the IO object is connected to
212 a file this won't close the file handle, but buffers may be flushed
215 Returns 0 on success, -1 on failure.
221 Test if the stream is at end of file. No further read requests will
222 be passed to your read callback until you seek().
226 Test if the stream has encountered a read or write error.
228 my $data = $io->read2(100);
232 When the stream has the error flag set no further read or write
233 requests will be passed to your callbacks until you seek.
238 or die "Flush error";
240 Flush any buffered output. This will not call lower write layers when
241 the stream has it's error flag set.
243 Returns a true value on success.
247 Test if buffering is enabled for this stream.
249 Returns a true value if the stream is buffered.
251 =item set_buffered($enabled)
253 If C<$enabled> is a non-zero integer, enable buffering, other disable
256 Disabling buffering will flush any buffered output, but any buffered
257 input will be retained and consumed by input methods.
259 Returns true if any buffered output was flushed successfully, false if
260 there was an error flushing output.
264 =head1 RAW I/O METHODS
266 These call the underlying I/O abstraction directly.
272 Call to write to the file. Returns the number of bytes written. The
273 data provided may contain only characters \x00 to \xFF - characters
274 outside this range will cause this method to croak().
276 If you supply a UTF-8 flagged string it will be converted to a byte
277 string, which may have a performance impact.
279 Returns -1 on error, though in most cases if the result of the write
280 isn't the number of bytes supplied you'll want to treat it as an error
286 my $count = $io->raw_read($buffer, $max_bytes);
288 Reads up to I<$max_bytes> bytes from the current position in the file
289 and stores them in I<$buffer>. Returns the number of bytes read on
290 success or an empty list on failure. Note that a read of zero bytes
291 is B<not> a failure, this indicates end of file.
295 my $buffer = $io->raw_read2($max_bytes);
297 An alternative interface to raw_read, that might be simpler to use in some
300 Returns the data read or an empty list.
304 my $new_position = $io->raw_seek($offset, $whence);
306 Seek to a new position in the file. Possible values for I<$whence> are:
312 C<SEEK_SET> - I<$offset> is the new position in the file.
316 C<SEEK_CUR> - I<$offset> is the offset from the current position in
321 C<SEEK_END> - I<$offset> is the offset relative to the end of the
326 Note that seeking past the end of the file may or may not result in an
329 Returns the new position in the file, or -1 on error.
333 my $result = $io->raw_close;
335 Call when you're done with the file. If the IO object is connected to
336 a file this won't close the file handle.
338 Returns 0 on success, -1 on failure.
342 =head1 UTILITY METHODS
348 Retrieve the data accumulated from an I/O layer object created with
349 the new_bufchain() method.
351 my $data = $io->slurp;
355 Dump the internal buffering state of the I/O object to C<stderr>.
363 Tony Cook <tonyc@cpan.org>
367 Imager, Imager::Files