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 The supplied variable must not be changed on the the life of the I/O
45 Buffer I/O layers are read only.
47 =item new_cb($writecb, $readcb, $seekcb, $closecb)
49 Create a new I/O layer based on callbacks. See
50 L<Imager::Files/"I/O Callbacks"> for details on the behavior of
55 Create a new I/O layer based on a perl file handle.
59 Create a new C<bufchain> based I/O layer. This accumulates the file
60 data as a chain of buffers starting from an empty stream.
62 Use the L</slurp()> method to retrieve the accumulated content into a
67 =head1 BUFFERED I/O METHODS
69 These methods use buffered I/O to improve performance unless you call
70 set_buffered() to disable buffering.
72 Prior to Imager 0.86 the write and read methods performed raw I/O.
78 Call to write to the file. Returns the number of bytes written. The
79 data provided may contain only characters \x00 to \xFF - characters
80 outside this range will cause this method to croak().
82 If you supply a UTF-8 flagged string it will be converted to a byte
83 string, which may have a performance impact.
85 Returns -1 on error, though in most cases if the result of the write
86 isn't the number of bytes supplied you'll want to treat it as an error
89 =item read($buffer, $size)
92 my $count = $io->read($buffer, $max_bytes);
94 Reads up to I<$max_bytes> bytes from the current position in the file
95 and stores them in I<$buffer>. Returns the number of bytes read on
96 success or an empty list on failure. Note that a read of zero bytes
97 is B<not> a failure, this indicates end of file.
101 my $buffer = $io->read2($max_bytes);
103 An alternative interface to read, that might be simpler to use in some
106 Returns the data read or an empty list. At end of file the data read
107 will be an empty string.
109 =item seek($offset, $whence)
111 my $new_position = $io->seek($offset, $whence);
113 Seek to a new position in the file. Possible values for I<$whence> are:
119 C<SEEK_SET> - I<$offset> is the new position in the file.
123 C<SEEK_CUR> - I<$offset> is the offset from the current position in
128 C<SEEK_END> - I<$offset> is the offset relative to the end of the
133 Note that seeking past the end of the file may or may not result in an
136 Any buffered output will be flushed, if flushing fails, seek() will
139 Returns the new position in the file, or -1 on error.
143 Return the next byte from the stream.
145 Returns the ordinal of the byte or -1 on error or end of file.
147 while ((my $c = $io->getc) != -1) {
153 =item gets($max_size)
155 =item gets($max_size, $end_of_line)
157 Returns the next line of input from the stream, as terminated by
160 The default C<max_size> is 8192.
162 The default C<end_of_line> is C<ord "\n">.
164 Returns nothing if the stream is in error or at end of file.
166 Returns the line as a string, including the line terminator (if one
167 was found) on success.
169 while (defined(my $line = $io->gets)) {
170 # do something with $line
175 Return the buffered next character from the stream, loading the buffer
178 For an unbuffered stream a buffer will be setup and loaded with a
181 Returns the ordinal of the byte or -1 on error or end of file.
187 Returns up to the next C<size> bytes from the file as a string.
189 Only up to the stream buffer size bytes (currently 8192) can be peeked.
191 This method ignores the buffering state of the stream.
193 Returns nothing on EOF.
195 my $s = $io->peekn(4);
196 if ($s =~ /^(II|MM)\*\0/) {
202 Write a single character to the stream.
204 Returns C<code> on success, or -1 on failure.
208 my $result = $io->close;
210 Call when you're done with the file. If the IO object is connected to
211 a file this won't close the file handle, but buffers may be flushed
214 Returns 0 on success, -1 on failure.
220 Test if the stream is at end of file. No further read requests will
221 be passed to your read callback until you seek().
225 Test if the stream has encountered a read or write error.
227 my $data = $io->read2(100);
231 When the stream has the error flag set no further read or write
232 requests will be passed to your callbacks until you seek.
237 or die "Flush error";
239 Flush any buffered output. This will not call lower write layers when
240 the stream has it's error flag set.
242 Returns a true value on success.
246 Test if buffering is enabled for this stream.
248 Returns a true value if the stream is buffered.
250 =item set_buffered($enabled)
252 If C<$enabled> is a non-zero integer, enable buffering, other disable
255 Disabling buffering will flush any buffered output, but any buffered
256 input will be retained and consumed by input methods.
258 Returns true if any buffered output was flushed successfully, false if
259 there was an error flushing output.
263 =head1 RAW I/O METHODS
265 These call the underlying I/O abstraction directly.
271 Call to write to the file. Returns the number of bytes written. The
272 data provided may contain only characters \x00 to \xFF - characters
273 outside this range will cause this method to croak().
275 If you supply a UTF-8 flagged string it will be converted to a byte
276 string, which may have a performance impact.
278 Returns -1 on error, though in most cases if the result of the write
279 isn't the number of bytes supplied you'll want to treat it as an error
285 my $count = $io->raw_read($buffer, $max_bytes);
287 Reads up to I<$max_bytes> bytes from the current position in the file
288 and stores them in I<$buffer>. Returns the number of bytes read on
289 success or an empty list on failure. Note that a read of zero bytes
290 is B<not> a failure, this indicates end of file.
294 my $buffer = $io->raw_read2($max_bytes);
296 An alternative interface to raw_read, that might be simpler to use in some
299 Returns the data read or an empty list.
303 my $new_position = $io->raw_seek($offset, $whence);
305 Seek to a new position in the file. Possible values for I<$whence> are:
311 C<SEEK_SET> - I<$offset> is the new position in the file.
315 C<SEEK_CUR> - I<$offset> is the offset from the current position in
320 C<SEEK_END> - I<$offset> is the offset relative to the end of the
325 Note that seeking past the end of the file may or may not result in an
328 Returns the new position in the file, or -1 on error.
332 my $result = $io->raw_close;
334 Call when you're done with the file. If the IO object is connected to
335 a file this won't close the file handle.
337 Returns 0 on success, -1 on failure.
341 =head1 UTILITY METHODS
347 Retrieve the data accumulated from an I/O layer object created with
348 the new_bufchain() method.
350 my $data = $io->slurp;
354 Dump the internal buffering state of the I/O object to C<stderr>.
362 Tony Cook <tonyc@cpan.org>
366 Imager, Imager::Files