Skip to content

Placeholder for large images #71

@lochmueller

Description

@lochmueller

Hey everyone,

currently, the placeholder service just stores the result of the URI in the target file without checking for errors. If there are errors/problems in the placeholder service the result is JSON and there is an error message. I got this error, because I use filefill for large images and the images are to large for https://via.placeholder.com/ as result, there is a "jpg" file in the filesystem with a JSON error in it. Bad for further processing like EXT:webp and regular content elements.

As result I add this code after this line https://github.com/IchHabRecht/filefill/blob/main/Classes/Resource/Handler/PlaceholderResource.php#L82 to reduce the file size, if the file size is the problem. I don't check the max file dimension or different errors of the service. This code just handle my usecase.

            if ($response->getHeaderLine('Content-Type') === 'application/json') {
                $result = \json_decode($content);
                if (isset($result->error) && $result->error === 'Requested image size is too large') {

                    $fileData = $fileObject->getProperties();
                    $fileData['identifier'] = $fileObject->getIdentifier();
                    $fileData['name'] = $fileObject->getName();

                    // half size
                    $fileData['width'] = floor($fileData['width'] / 2);
                    $fileData['height'] = floor($fileData['height'] / 2);

                    $fileObjectResized = new File($fileData, $fileObject->getStorage());

                    return $this->getFile($fileData['identifier'], $filePath, $fileObjectResized);
                }
            }

Perhaps PlaceholderResource.php should handle this more generall (at least throw an Exception if the result is json, so the getFile method return false).

Regards,
Tim

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions