Comments (3)
We are using Craft CMS and the Plugin ImageOptimize which supports integration with imgix. However, it seems like under specific circumstances, urls get encoded twice which leads to problems with german umlauts and leads to 404 for images with umlauts in the path. The related issue can be found here: nystudio107/craft-imageoptimize#395 I am not entirely sure if this is an issue in the plugin or in imgix-php - we are currently looking for a quick solution, or workaround (besides renaming the path) since we are facing this issue in a client project.
Thank you for your help
from imgix-php.
Hey @aloco , thanks for opening this issue.
This seems to come from the craft-imageoptimize-imgix dependency encoding the path before passing it to imgix-php
, which will also encode it. I could be missing something, but I believe if they didn't encode before sending URLs to our library then this would resolve the issue.
They could directly parse the URL without encoding it in getAssetUri()
.
// in src/imagetransforms/ImgixImageTransform.php
public function getAssetUri(Asset $asset): ?string
{
// ...
$fs = $volume->getFs();
if ($fs instanceof Local) {
$assetUrl = AssetsHelper::generateUrl($fs, $asset);
// Directly parse the URL to get the path component without encoding
return parse_url($assetUrl, PHP_URL_PATH);
}
return parent::getAssetUri($asset);
}
So that it doesn't get double encoded in getTransformUrl()
.
public function getTransformUrl(Asset $asset, CraftImageTransformModel|string|array|null $transform): ?string
{
// ...
$assetUri = $this->getAssetUri($asset); // un-encoded
$url = $builder->createURL($assetUri, $params);
Craft::debug(
'Imgix transform created for: ' . $assetUri . ' - Params: ' . print_r($params, true) . ' - URL: ' . $url,
__METHOD__
);
return $url;
}
That being said, path encoding on createURL()
would be an easier and less impactful change for maintainers and it is on our radar. We hope to add it in a future release.
from imgix-php.
@luqven developer of said craft-imageoptimize-imgix
here -- we're not actually encoding the URL though, we're calling rawurldecode()
before parsing the URL.
from imgix-php.
Related Issues (20)
- build: don't commit the `composer.lock` file HOT 3
- Add option to exclude library param HOT 5
- Mangled src URLs HOT 1
- unable to add imgix-php files to git HOT 4
- Building a URL with multi-dimensional array HOT 2
- Describe an easy example for purge images in PHP HOT 6
- Regression in version 1.2 HOT 1
- Umlaut & signed URLs not working HOT 5
- Drupal 7 with Imgix HOT 2
- encoding URLs incorrectly for characters "(" and ")" HOT 4
- Multi-line Text & Overlays with the Typesetting Endpoint HOT 1
- Image width and height on-the-fly HOT 4
- Tag a new release with latest changes in master HOT 1
- h-parameter scaling in createSrcSet HOT 6
- feat: customize variable qualities
- feat: customize target Device Pixel Ratios
- Release a new major version (v4.0) with PHP 8.0+ support only HOT 5
- Add a coding style, with an automatic formatter HOT 4
- Suggestion: Open development branch for accepting PRs to next major version HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from imgix-php.