Git Product home page Git Product logo

Comments (3)

aloco avatar aloco commented on June 24, 2024

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.

luqven avatar luqven commented on June 24, 2024

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.

khalwat avatar khalwat commented on June 24, 2024

@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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.