NAME
Imager::File::AVIF - read and write AVIF files
SYNOPSIS
use
Imager;
# will be loaded automatically in later versions of Imager when reading or writing
use
Imager::File::AVIF;
my
$img
= Imager->new;
$img
->
read
(
file
=>
"foo.avif"
)
or
die
$img
->errstr;
# type won't be necessary if the extension is avif from Imager 1.016
$img
->
write
(
file
=>
"foo.avif"
,
type
=>
"avif"
)
or
die
$img
->errstr;
# before 1.016
Imager->add_type_extensions(
avif
=>
qw(avif avifs)
);
use
Imager::File::AVIF;
# do we have the codecs needed to read and write?
my
$can_read
= Imager::File::AVIF->can_read;
my
$can_write
= Imager::File::AVIF->can_write;
# library build/runtime information
my
$codecs
= Imager::File::AVIF->codecs;
my
$libver
= Imager::File::AVIF->libversion;
my
$buildver
= Imager::File::AVIF->buildversion;
DESCRIPTION
Implements .avif file support for Imager.
At this point this is a very basic implementation, with limited control over output.
TAGS
Imager::File::AVIF will use the following tags when writing to AVIF and set them in images read from AVIF files:
avif_timescale
- the base frame rate of the file. This must be a positive integer and is specified in Hz. i.e. if this is 60 and all frames have a duration of 1, the file will be playeed at 60 frames per second.This is only read from the first images and controls all frames in the file.
Default: 1Hz.
avif_duration
- the number of timescale units for this frame. i.e. ifavif_timescale
is 60, andavif_duration
is 2, the frame will be displayed for 1/30 second. Default: 1.
The following tag is set in image read from an AVIF file:
avif_total_duration
- the total length of the image sequence in the units controlled byavif_timescale
.
METHODS
- can_read()
-
if
(Imager::File::AVIF->can_read) {
# we can read AVIF files
}
Tests whether the
libavif
codec list includes any codecs capable of reading. - can_write()
-
if
(Imager::File::AVIF->can_write) {
# we can write AVIF files
}
Tests whether the
libavif
codec list includes any codecs capable of writing. - buildversion()
-
Returns the version of the
libavif
library Imager::File::AVIF was built with.print
Imager::File::AVIF->buildversion,
"\n"
;
- libversion()
-
Returns the version of the
libavif
library Imager::File::AVIF is linked with. This may be different to buildversion() iflibavif
is dynamically linked.print
Imager::File::AVIF->libversion,
"\n"
;
- codecs()
-
Returns the codecs
libavif
was built with, this will look something like:dav1d [dec]:0.7.1, libgav1 [dec]:0.16.1, aom [enc/dec]:v3.3.0
An entry with
dec
is required to be able to read AVIF images, and an entry withenc
is required to be able to write AVIF images.print
Imager::File::AVIF->codecs,
"\n"
;
INSTALLATION
To install Imager::File::AVIF you need Imager installed and you need libavif
installed, along with it's development headers.
Note that the libavif
included with Debian bullseye was not built with a write compatible codec, but libavif
from bullseye-backports does include a write compatible codec.
If you've installed libavif
outside the normal places, install pkg-config
and set PKG_CONFIG_PATH
to the directory containing the installed libavif.pc when running Makefile.PL
, for example:
PKG_CONFIG_PATH=/home/tony/
local
/libavif-0.10.1/lib/pkgconfig/ perl Makefile.PL
AUTHOR
Tony Cook <tonyc@cpan.org>
SEE ALSO
Imager, Imager::Files.