File: avif_decode_encode.phpt

package info (click to toggle)
php8.4 8.4.11-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 208,108 kB
  • sloc: ansic: 1,060,628; php: 35,345; sh: 11,866; cpp: 7,201; pascal: 4,913; javascript: 3,091; asm: 2,810; yacc: 2,411; makefile: 689; xml: 446; python: 301; awk: 148
file content (82 lines) | stat: -rw-r--r-- 2,375 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
--TEST--
avif decoding/encoding tests
--EXTENSIONS--
gd
--SKIPIF--
<?php
    if (!function_exists("imagecreatefrompng") || !function_exists("imagepng")) {
        die("skip png support unavailable");
    }
    if (!function_exists("imagecreatefromavif") || !function_exists("imageavif")) {
        die("skip avif support unavailable");
    }
?>
--FILE--
<?php

    require_once __DIR__ . '/similarity.inc';

    $infile = __DIR__  . '/girl.avif';
    $outfile = __DIR__  . '/test.avif';

    echo 'Decoding AVIF image: ';
    $img = imagecreatefromavif($infile);
    echo_status($img);

    echo 'Default AVIF encoding: ';
    echo_status(imageavif($img, $outfile));

    echo 'Encoding AVIF at quality 70: ';
    echo_status(imageavif($img, $outfile, 70));

    echo 'Encoding AVIF at quality 70 with speed 5: ';
    echo_status(imageavif($img, $outfile, 70, 5));

    echo 'Encoding AVIF with default quality: ';
    echo_status(imageavif($img, $outfile, -1));

    echo 'Encoding AVIF with illegal quality: ';
    try {
    	imageavif($img, $outfile, 1234);
    } catch (\ValueError $e) {
        echo $e->getMessage() . PHP_EOL;
    }

    echo 'Encoding AVIF with illegal speed: ';

    try {
    	imageavif($img, $outfile, 70, 1234);
    } catch (\ValueError $e) {
        echo $e->getMessage() . PHP_EOL;
    }

    echo 'Encoding AVIF losslessly... ';
    echo_status(imageavif($img, $outfile, 100, 0));

    echo "Decoding the AVIF we just wrote...\n";
    $img_from_avif = imagecreatefromavif($outfile);

    // Note we could also forgive a certain number of pixel differences.
    // With the current test image, we just didn't need to.
    echo 'How many pixels are different in the two images? ';
    print_r(calc_image_dissimilarity($img, $img_from_avif));

    unlink($outfile);


    function echo_status($success) {
        echo $success ? "ok\n" : "failed\n";
    }
?>

--EXPECT--
Decoding AVIF image: ok
Default AVIF encoding: ok
Encoding AVIF at quality 70: ok
Encoding AVIF at quality 70 with speed 5: ok
Encoding AVIF with default quality: ok
Encoding AVIF with illegal quality: imageavif(): Argument #3 ($quality) must be between -1 and 100
Encoding AVIF with illegal speed: imageavif(): Argument #4 ($speed) must be between -1 and 10
Encoding AVIF losslessly... ok
Decoding the AVIF we just wrote...
How many pixels are different in the two images? 0