Propagate AVIF support from libgd - #7026

Closed
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif
Closed

Propagate AVIF support from libgd#7026
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif

Conversation

@morsssss

Copy link
Copy Markdown
Contributor

The work to support AVIF in getimagesize() and imagecreatefromstring() will be done in a followup PR.

Also I realize I need some tests :)

/cc @cmb69

@cmb69

Copy link
Copy Markdown
Member

Also I realize I need some tests :)

Yes, at least some basic tests should be there.

Also, please resolve the merge conflicts (might be related to Flavio's already merged PR). I'll try to add Windows and AppVeyor support over the weekend.

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Agreed - I'd bet the conflicts deal with the includes.

Looks like I now have access to resolve those; so, thanks! :)

Comment thread.travis.yml Outdated
@morsssss

Copy link
Copy Markdown
ContributorAuthor

Added a little test suite!

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Well, I imagine I'd need to do something else here to help the build include libavif - or to leave it out if it's unwanted. I'm not sure where this gets configured....

@cmb69

Copy link
Copy Markdown
Member

I have just pushed a commit that fixes the imagetype support (not the real AVIF detection, though). I think that AppVeyor CI will now pass. Please pull that commit.

To get the other CIs green, just remove the attempt to install libavif (and the --with-avif) from all CIs which don't support it (probably all except for Cirrus).

@cmb69

Copy link
Copy Markdown
Member

There was another failing image test, which I fixed now. I also added AVIF support for Windows; that's not yet available for AppVeyor; I'm working on that.

@cmb69

Copy link
Copy Markdown
Member

Two CIs green! \o/

I just pushed a commit which is supposed to build with AVIF support on AppVeyor.

Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
morsssssand others added 13 commits May 24, 2021 11:57
To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
We fix an accidental fall through, and the order of enum values (COUNT
has to be last). We also fix the respective test case.
This is only needed as long as libavif is not part of the official
dependencies. This commit should be reverted before the PR is merged.
@cmb69

Copy link
Copy Markdown
Member

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@morsssss

Copy link
Copy Markdown
ContributorAuthor

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@cmb69 Yes! I'm so embarrassed. I rebased to avoid just this problem... but I failed to force push. Then I watched in horror as it told me 302 files had been modified 😭

To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
@morsssss

Copy link
Copy Markdown
ContributorAuthor

🎉🎉🎉

@nikicnikic closed this in 81f6d36Jun 10, 2021
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
While not mentioned in the changelog entry, the commit to PHP itself does contain a new constant declaration...
Related to:
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1449.
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1448.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1449.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1448.
Ayesh added a commit to Ayesh/php-src that referenced this pull request Sep 13, 2024
When the avif support was first added (phpGH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
TimWolla pushed a commit that referenced this pull request Sep 15, 2024
When the avif support was first added (GH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@morsssss@cmb69@nikic@krakjoe
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Propagate AVIF support from libgd - #7026

Closed
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif
Closed

Propagate AVIF support from libgd#7026
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif

Conversation

@morsssss

Copy link
Copy Markdown
Contributor

The work to support AVIF in getimagesize() and imagecreatefromstring() will be done in a followup PR.

Also I realize I need some tests :)

/cc @cmb69

@cmb69

Copy link
Copy Markdown
Member

Also I realize I need some tests :)

Yes, at least some basic tests should be there.

Also, please resolve the merge conflicts (might be related to Flavio's already merged PR). I'll try to add Windows and AppVeyor support over the weekend.

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Agreed - I'd bet the conflicts deal with the includes.

Looks like I now have access to resolve those; so, thanks! :)

Comment thread.travis.yml Outdated
@morsssss

Copy link
Copy Markdown
ContributorAuthor

Added a little test suite!

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Well, I imagine I'd need to do something else here to help the build include libavif - or to leave it out if it's unwanted. I'm not sure where this gets configured....

@cmb69

Copy link
Copy Markdown
Member

I have just pushed a commit that fixes the imagetype support (not the real AVIF detection, though). I think that AppVeyor CI will now pass. Please pull that commit.

To get the other CIs green, just remove the attempt to install libavif (and the --with-avif) from all CIs which don't support it (probably all except for Cirrus).

@cmb69

Copy link
Copy Markdown
Member

There was another failing image test, which I fixed now. I also added AVIF support for Windows; that's not yet available for AppVeyor; I'm working on that.

@cmb69

Copy link
Copy Markdown
Member

Two CIs green! \o/

I just pushed a commit which is supposed to build with AVIF support on AppVeyor.

Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
morsssssand others added 13 commits May 24, 2021 11:57
To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
We fix an accidental fall through, and the order of enum values (COUNT
has to be last). We also fix the respective test case.
This is only needed as long as libavif is not part of the official
dependencies. This commit should be reverted before the PR is merged.
@cmb69

Copy link
Copy Markdown
Member

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@morsssss

Copy link
Copy Markdown
ContributorAuthor

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@cmb69 Yes! I'm so embarrassed. I rebased to avoid just this problem... but I failed to force push. Then I watched in horror as it told me 302 files had been modified 😭

To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
@morsssss

Copy link
Copy Markdown
ContributorAuthor

🎉🎉🎉

@nikicnikic closed this in 81f6d36Jun 10, 2021
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
While not mentioned in the changelog entry, the commit to PHP itself does contain a new constant declaration...
Related to:
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1449.
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1448.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1449.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1448.
Ayesh added a commit to Ayesh/php-src that referenced this pull request Sep 13, 2024
When the avif support was first added (phpGH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
TimWolla pushed a commit that referenced this pull request Sep 15, 2024
When the avif support was first added (GH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@morsssss@cmb69@nikic@krakjoe
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Propagate AVIF support from libgd - #7026

Closed
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif
Closed

Propagate AVIF support from libgd#7026
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif

Conversation

@morsssss

Copy link
Copy Markdown
Contributor

The work to support AVIF in getimagesize() and imagecreatefromstring() will be done in a followup PR.

Also I realize I need some tests :)

/cc @cmb69

@cmb69

Copy link
Copy Markdown
Member

Also I realize I need some tests :)

Yes, at least some basic tests should be there.

Also, please resolve the merge conflicts (might be related to Flavio's already merged PR). I'll try to add Windows and AppVeyor support over the weekend.

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Agreed - I'd bet the conflicts deal with the includes.

Looks like I now have access to resolve those; so, thanks! :)

Comment thread.travis.yml Outdated
@morsssss

Copy link
Copy Markdown
ContributorAuthor

Added a little test suite!

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Well, I imagine I'd need to do something else here to help the build include libavif - or to leave it out if it's unwanted. I'm not sure where this gets configured....

@cmb69

Copy link
Copy Markdown
Member

I have just pushed a commit that fixes the imagetype support (not the real AVIF detection, though). I think that AppVeyor CI will now pass. Please pull that commit.

To get the other CIs green, just remove the attempt to install libavif (and the --with-avif) from all CIs which don't support it (probably all except for Cirrus).

@cmb69

Copy link
Copy Markdown
Member

There was another failing image test, which I fixed now. I also added AVIF support for Windows; that's not yet available for AppVeyor; I'm working on that.

@cmb69

Copy link
Copy Markdown
Member

Two CIs green! \o/

I just pushed a commit which is supposed to build with AVIF support on AppVeyor.

Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
morsssssand others added 13 commits May 24, 2021 11:57
To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
We fix an accidental fall through, and the order of enum values (COUNT
has to be last). We also fix the respective test case.
This is only needed as long as libavif is not part of the official
dependencies. This commit should be reverted before the PR is merged.
@cmb69

Copy link
Copy Markdown
Member

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@morsssss

Copy link
Copy Markdown
ContributorAuthor

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@cmb69 Yes! I'm so embarrassed. I rebased to avoid just this problem... but I failed to force push. Then I watched in horror as it told me 302 files had been modified 😭

To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
@morsssss

Copy link
Copy Markdown
ContributorAuthor

🎉🎉🎉

@nikicnikic closed this in 81f6d36Jun 10, 2021
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
While not mentioned in the changelog entry, the commit to PHP itself does contain a new constant declaration...
Related to:
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1449.
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1448.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1449.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1448.
Ayesh added a commit to Ayesh/php-src that referenced this pull request Sep 13, 2024
When the avif support was first added (phpGH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
TimWolla pushed a commit that referenced this pull request Sep 15, 2024
When the avif support was first added (GH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@morsssss@cmb69@nikic@krakjoe
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Propagate AVIF support from libgd - #7026

Closed
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif
Closed

Propagate AVIF support from libgd#7026
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif

Conversation

@morsssss

Copy link
Copy Markdown
Contributor

The work to support AVIF in getimagesize() and imagecreatefromstring() will be done in a followup PR.

Also I realize I need some tests :)

/cc @cmb69

@cmb69

Copy link
Copy Markdown
Member

Also I realize I need some tests :)

Yes, at least some basic tests should be there.

Also, please resolve the merge conflicts (might be related to Flavio's already merged PR). I'll try to add Windows and AppVeyor support over the weekend.

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Agreed - I'd bet the conflicts deal with the includes.

Looks like I now have access to resolve those; so, thanks! :)

Comment thread.travis.yml Outdated
@morsssss

Copy link
Copy Markdown
ContributorAuthor

Added a little test suite!

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Well, I imagine I'd need to do something else here to help the build include libavif - or to leave it out if it's unwanted. I'm not sure where this gets configured....

@cmb69

Copy link
Copy Markdown
Member

I have just pushed a commit that fixes the imagetype support (not the real AVIF detection, though). I think that AppVeyor CI will now pass. Please pull that commit.

To get the other CIs green, just remove the attempt to install libavif (and the --with-avif) from all CIs which don't support it (probably all except for Cirrus).

@cmb69

Copy link
Copy Markdown
Member

There was another failing image test, which I fixed now. I also added AVIF support for Windows; that's not yet available for AppVeyor; I'm working on that.

@cmb69

Copy link
Copy Markdown
Member

Two CIs green! \o/

I just pushed a commit which is supposed to build with AVIF support on AppVeyor.

Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
morsssssand others added 13 commits May 24, 2021 11:57
To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
We fix an accidental fall through, and the order of enum values (COUNT
has to be last). We also fix the respective test case.
This is only needed as long as libavif is not part of the official
dependencies. This commit should be reverted before the PR is merged.
@cmb69

Copy link
Copy Markdown
Member

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@morsssss

Copy link
Copy Markdown
ContributorAuthor

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@cmb69 Yes! I'm so embarrassed. I rebased to avoid just this problem... but I failed to force push. Then I watched in horror as it told me 302 files had been modified 😭

To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
@morsssss

Copy link
Copy Markdown
ContributorAuthor

🎉🎉🎉

@nikicnikic closed this in 81f6d36Jun 10, 2021
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
While not mentioned in the changelog entry, the commit to PHP itself does contain a new constant declaration...
Related to:
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1449.
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1448.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1449.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1448.
Ayesh added a commit to Ayesh/php-src that referenced this pull request Sep 13, 2024
When the avif support was first added (phpGH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
TimWolla pushed a commit that referenced this pull request Sep 15, 2024
When the avif support was first added (GH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@morsssss@cmb69@nikic@krakjoe
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Propagate AVIF support from libgd - #7026

Closed
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif
Closed

Propagate AVIF support from libgd#7026
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif

Conversation

@morsssss

Copy link
Copy Markdown
Contributor

The work to support AVIF in getimagesize() and imagecreatefromstring() will be done in a followup PR.

Also I realize I need some tests :)

/cc @cmb69

@cmb69

Copy link
Copy Markdown
Member

Also I realize I need some tests :)

Yes, at least some basic tests should be there.

Also, please resolve the merge conflicts (might be related to Flavio's already merged PR). I'll try to add Windows and AppVeyor support over the weekend.

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Agreed - I'd bet the conflicts deal with the includes.

Looks like I now have access to resolve those; so, thanks! :)

Comment thread.travis.yml Outdated
@morsssss

Copy link
Copy Markdown
ContributorAuthor

Added a little test suite!

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Well, I imagine I'd need to do something else here to help the build include libavif - or to leave it out if it's unwanted. I'm not sure where this gets configured....

@cmb69

Copy link
Copy Markdown
Member

I have just pushed a commit that fixes the imagetype support (not the real AVIF detection, though). I think that AppVeyor CI will now pass. Please pull that commit.

To get the other CIs green, just remove the attempt to install libavif (and the --with-avif) from all CIs which don't support it (probably all except for Cirrus).

@cmb69

Copy link
Copy Markdown
Member

There was another failing image test, which I fixed now. I also added AVIF support for Windows; that's not yet available for AppVeyor; I'm working on that.

@cmb69

Copy link
Copy Markdown
Member

Two CIs green! \o/

I just pushed a commit which is supposed to build with AVIF support on AppVeyor.

Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
morsssssand others added 13 commits May 24, 2021 11:57
To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
We fix an accidental fall through, and the order of enum values (COUNT
has to be last). We also fix the respective test case.
This is only needed as long as libavif is not part of the official
dependencies. This commit should be reverted before the PR is merged.
@cmb69

Copy link
Copy Markdown
Member

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@morsssss

Copy link
Copy Markdown
ContributorAuthor

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@cmb69 Yes! I'm so embarrassed. I rebased to avoid just this problem... but I failed to force push. Then I watched in horror as it told me 302 files had been modified 😭

To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
@morsssss

Copy link
Copy Markdown
ContributorAuthor

🎉🎉🎉

@nikicnikic closed this in 81f6d36Jun 10, 2021
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
While not mentioned in the changelog entry, the commit to PHP itself does contain a new constant declaration...
Related to:
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1449.
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1448.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1449.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1448.
Ayesh added a commit to Ayesh/php-src that referenced this pull request Sep 13, 2024
When the avif support was first added (phpGH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
TimWolla pushed a commit that referenced this pull request Sep 15, 2024
When the avif support was first added (GH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@morsssss@cmb69@nikic@krakjoe
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Propagate AVIF support from libgd - #7026

Closed
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif
Closed

Propagate AVIF support from libgd#7026
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif

Conversation

@morsssss

Copy link
Copy Markdown
Contributor

The work to support AVIF in getimagesize() and imagecreatefromstring() will be done in a followup PR.

Also I realize I need some tests :)

/cc @cmb69

@cmb69

Copy link
Copy Markdown
Member

Also I realize I need some tests :)

Yes, at least some basic tests should be there.

Also, please resolve the merge conflicts (might be related to Flavio's already merged PR). I'll try to add Windows and AppVeyor support over the weekend.

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Agreed - I'd bet the conflicts deal with the includes.

Looks like I now have access to resolve those; so, thanks! :)

Comment thread.travis.yml Outdated
@morsssss

Copy link
Copy Markdown
ContributorAuthor

Added a little test suite!

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Well, I imagine I'd need to do something else here to help the build include libavif - or to leave it out if it's unwanted. I'm not sure where this gets configured....

@cmb69

Copy link
Copy Markdown
Member

I have just pushed a commit that fixes the imagetype support (not the real AVIF detection, though). I think that AppVeyor CI will now pass. Please pull that commit.

To get the other CIs green, just remove the attempt to install libavif (and the --with-avif) from all CIs which don't support it (probably all except for Cirrus).

@cmb69

Copy link
Copy Markdown
Member

There was another failing image test, which I fixed now. I also added AVIF support for Windows; that's not yet available for AppVeyor; I'm working on that.

@cmb69

Copy link
Copy Markdown
Member

Two CIs green! \o/

I just pushed a commit which is supposed to build with AVIF support on AppVeyor.

Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
morsssssand others added 13 commits May 24, 2021 11:57
To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
We fix an accidental fall through, and the order of enum values (COUNT
has to be last). We also fix the respective test case.
This is only needed as long as libavif is not part of the official
dependencies. This commit should be reverted before the PR is merged.
@cmb69

Copy link
Copy Markdown
Member

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@morsssss

Copy link
Copy Markdown
ContributorAuthor

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@cmb69 Yes! I'm so embarrassed. I rebased to avoid just this problem... but I failed to force push. Then I watched in horror as it told me 302 files had been modified 😭

To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
@morsssss

Copy link
Copy Markdown
ContributorAuthor

🎉🎉🎉

@nikicnikic closed this in 81f6d36Jun 10, 2021
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
While not mentioned in the changelog entry, the commit to PHP itself does contain a new constant declaration...
Related to:
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1449.
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1448.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1449.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1448.
Ayesh added a commit to Ayesh/php-src that referenced this pull request Sep 13, 2024
When the avif support was first added (phpGH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
TimWolla pushed a commit that referenced this pull request Sep 15, 2024
When the avif support was first added (GH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@morsssss@cmb69@nikic@krakjoe
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Propagate AVIF support from libgd - #7026

Closed
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif
Closed

Propagate AVIF support from libgd#7026
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif

Conversation

@morsssss

Copy link
Copy Markdown
Contributor

The work to support AVIF in getimagesize() and imagecreatefromstring() will be done in a followup PR.

Also I realize I need some tests :)

/cc @cmb69

@cmb69

Copy link
Copy Markdown
Member

Also I realize I need some tests :)

Yes, at least some basic tests should be there.

Also, please resolve the merge conflicts (might be related to Flavio's already merged PR). I'll try to add Windows and AppVeyor support over the weekend.

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Agreed - I'd bet the conflicts deal with the includes.

Looks like I now have access to resolve those; so, thanks! :)

Comment thread.travis.yml Outdated
@morsssss

Copy link
Copy Markdown
ContributorAuthor

Added a little test suite!

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Well, I imagine I'd need to do something else here to help the build include libavif - or to leave it out if it's unwanted. I'm not sure where this gets configured....

@cmb69

Copy link
Copy Markdown
Member

I have just pushed a commit that fixes the imagetype support (not the real AVIF detection, though). I think that AppVeyor CI will now pass. Please pull that commit.

To get the other CIs green, just remove the attempt to install libavif (and the --with-avif) from all CIs which don't support it (probably all except for Cirrus).

@cmb69

Copy link
Copy Markdown
Member

There was another failing image test, which I fixed now. I also added AVIF support for Windows; that's not yet available for AppVeyor; I'm working on that.

@cmb69

Copy link
Copy Markdown
Member

Two CIs green! \o/

I just pushed a commit which is supposed to build with AVIF support on AppVeyor.

Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
morsssssand others added 13 commits May 24, 2021 11:57
To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
We fix an accidental fall through, and the order of enum values (COUNT
has to be last). We also fix the respective test case.
This is only needed as long as libavif is not part of the official
dependencies. This commit should be reverted before the PR is merged.
@cmb69

Copy link
Copy Markdown
Member

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@morsssss

Copy link
Copy Markdown
ContributorAuthor

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@cmb69 Yes! I'm so embarrassed. I rebased to avoid just this problem... but I failed to force push. Then I watched in horror as it told me 302 files had been modified 😭

To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
@morsssss

Copy link
Copy Markdown
ContributorAuthor

🎉🎉🎉

@nikicnikic closed this in 81f6d36Jun 10, 2021
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
While not mentioned in the changelog entry, the commit to PHP itself does contain a new constant declaration...
Related to:
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1449.
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1448.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1449.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1448.
Ayesh added a commit to Ayesh/php-src that referenced this pull request Sep 13, 2024
When the avif support was first added (phpGH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
TimWolla pushed a commit that referenced this pull request Sep 15, 2024
When the avif support was first added (GH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@morsssss@cmb69@nikic@krakjoe
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Propagate AVIF support from libgd - #7026

Closed
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif
Closed

Propagate AVIF support from libgd#7026
morsssss wants to merge 38 commits into
php:masterfrom
morsssss:avif

Conversation

@morsssss

Copy link
Copy Markdown
Contributor

The work to support AVIF in getimagesize() and imagecreatefromstring() will be done in a followup PR.

Also I realize I need some tests :)

/cc @cmb69

@cmb69

Copy link
Copy Markdown
Member

Also I realize I need some tests :)

Yes, at least some basic tests should be there.

Also, please resolve the merge conflicts (might be related to Flavio's already merged PR). I'll try to add Windows and AppVeyor support over the weekend.

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Agreed - I'd bet the conflicts deal with the includes.

Looks like I now have access to resolve those; so, thanks! :)

Comment thread.travis.yml Outdated
@morsssss

Copy link
Copy Markdown
ContributorAuthor

Added a little test suite!

@morsssss

Copy link
Copy Markdown
ContributorAuthor

Well, I imagine I'd need to do something else here to help the build include libavif - or to leave it out if it's unwanted. I'm not sure where this gets configured....

@cmb69

Copy link
Copy Markdown
Member

I have just pushed a commit that fixes the imagetype support (not the real AVIF detection, though). I think that AppVeyor CI will now pass. Please pull that commit.

To get the other CIs green, just remove the attempt to install libavif (and the --with-avif) from all CIs which don't support it (probably all except for Cirrus).

@cmb69

Copy link
Copy Markdown
Member

There was another failing image test, which I fixed now. I also added AVIF support for Windows; that's not yet available for AppVeyor; I'm working on that.

@cmb69

Copy link
Copy Markdown
Member

Two CIs green! \o/

I just pushed a commit which is supposed to build with AVIF support on AppVeyor.

Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
Comment threadext/gd/tests/avif_decode_encode.phpt Outdated
morsssssand others added 13 commits May 24, 2021 11:57
To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
We fix an accidental fall through, and the order of enum values (COUNT
has to be last). We also fix the respective test case.
This is only needed as long as libavif is not part of the official
dependencies. This commit should be reverted before the PR is merged.
@cmb69

Copy link
Copy Markdown
Member

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@morsssss

Copy link
Copy Markdown
ContributorAuthor

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@cmb69 Yes! I'm so embarrassed. I rebased to avoid just this problem... but I failed to force push. Then I watched in horror as it told me 302 files had been modified 😭

To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
@morsssss

Copy link
Copy Markdown
ContributorAuthor

🎉🎉🎉

@nikicnikic closed this in 81f6d36Jun 10, 2021
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
While not mentioned in the changelog entry, the commit to PHP itself does contain a new constant declaration...
Related to:
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Includes unit tests.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1449.
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesGH-1448.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]
> * Added CURLOPT_DOH_URL option
> * Added certificate blob options when for libcurl >= 7.71.0:
>
> CURLOPT_ISSUERCERT_BLOB
> CURLOPT_PROXY_ISSUERCERT
> CURLOPT_PROXY_ISSUERCERT_BLOB
> CURLOPT_PROXY_SSLCERT_BLOB
> CURLOPT_PROXY_SSLKEY_BLOB
> CURLOPT_SSLCERT_BLOB
> CURLOPT_SSLKEY_BLOB
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c
* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
> quality. This constant is only defined, if a libgd is used which supports
> lossless WebP encoding.
Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]
> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de
* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]
Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa
* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...
Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357
While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...
Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1449.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]
(mentioned in new features, but not in the new functions list)
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
> `imageavif()` functions, if libgd has been built with avif support.
Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]
(mentioned in new features, but not in the new functions list)
> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.
While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.
Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6
Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>
ClosesphpGH-1448.
Ayesh added a commit to Ayesh/php-src that referenced this pull request Sep 13, 2024
When the avif support was first added (phpGH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
TimWolla pushed a commit that referenced this pull request Sep 15, 2024
When the avif support was first added (GH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.
Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.
`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.
[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@morsssss@cmb69@nikic@krakjoe