Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SVG files are broken #220

Open
maliMirkec opened this issue Apr 12, 2024 · 4 comments
Open

SVG files are broken #220

maliMirkec opened this issue Apr 12, 2024 · 4 comments

Comments

@maliMirkec
Copy link

When I try to save the remote image with the Eleventy Image plugin, the SVG file is broken.
I've tried to use Buffer but had no luck.
So I've tried to debug what is going on.

The function createSvg in the src/format-hooks/svg.js file returns the following Uint8Array data, which is then stored as an SVG file. I don't know how to fix this.

svg-example
svg-js-debug

@Aankhen
Copy link

Aankhen commented Apr 15, 2024

This is a strange bug, as we discussed on Discord, because what you’re getting in the screenshot is the string representation of a Uint8Array. In other words, you’ve somehow got the bytes of the string of the bytes of the image.

@Aankhen
Copy link

Aankhen commented Apr 15, 2024

I can confirm that this happens with other SVG images too, like this one: https://upload.wikimedia.org/wikipedia/commons/e/e8/Svg_example3.svg

Here’s a small demonstration:

❯❯ cat .\.eleventy.js
const Image = require("@11ty/eleventy-img");

module.exports = function (eleventyConfig) {
  eleventyConfig.addShortcode("image", async function (src, alt, sizes) {
    let metadata = await Image(src, {
      widths: [300, 600],
      formats: [null],
    });

    let imageAttributes = {
      alt,
      sizes,
      loading: "lazy",
      decoding: "async",
    };

    // You bet we throw an error on a missing alt (alt="" works okay)
    return Image.generateHTML(metadata, imageAttributes);
  });
};
❯❯ cat .\test.njk
{% image 'https://images.ctfassets.net/qbmf238cr6te/2ExPY7uYyafazH0IfFnpTD/610bce5faa1598685f2985d2062dcf1f/heyflow-logo.svg', '', '30vw' %}
{% image 'https://upload.wikimedia.org/wikipedia/commons/e/e8/Svg_example3.svg', '', '30vw' %}
❯❯ npx eleventy
[11ty] Writing _site/test/index.html from ./test.njk
[11ty] Wrote 1 file in 0.38 seconds (v2.0.1)
❯❯ la -T img .cache
Mode   Size Date Modified    Date Accessed    Git Name
d----     - 2024-04-15 14:34 2024-04-15 14:34  -N .cache
-a---    87 2024-04-15 14:34 2024-04-15 14:34  -N ├── eleventy-fetch-627a3ab0d5a14cfae88fefbc8d6d06
-a---   477 2024-04-15 14:34 2024-04-15 14:34  -N ├── eleventy-fetch-627a3ab0d5a14cfae88fefbc8d6d06.buffer
-a---    87 2024-04-15 14:34 2024-04-15 14:34  -N ├── eleventy-fetch-732d66e39e1245c8666eeb1d7869e9
-a--- 2.5Ki 2024-04-15 14:34 2024-04-15 14:34  -N └── eleventy-fetch-732d66e39e1245c8666eeb1d7869e9.buffer
d----     - 2024-04-15 14:34 2024-04-15 14:34  -N img
-a--- 1.6Ki 2024-04-15 14:34 2024-04-15 14:34  -N ├── cKJqfkmfxt-467.svg
-a--- 7.5Ki 2024-04-15 14:34 2024-04-15 14:34  -N └── tn8vIuPE6f-1500.svg
❯❯ foreach ($p in (gci .cache | ?{ -not $_.Name.EndsWith(".buffer") })) { cat $p }
[{"627a3ab0d5a14cfae88fefbc8d6d06":"1"},{"cachedAt":1713171842099,"type":"2"},"buffer"]
[{"732d66e39e1245c8666eeb1d7869e9":"1"},{"cachedAt":1713171841858,"type":"2"},"buffer"]
❯❯ cat .\img\cKJqfkmfxt-467.svg
60,63,120,109,108,32,118,101,114,115,105,111,110,61,34,49,46,48,34,63,62,13,10,60,33,68,79,67,84,89,80,69,32,115,118,103,32,80,85,66,76,73,67,32,34,45,47,47,87,51,67,47,47,68,84,68,32,83,86,71,32,49,46,49,47,47,69,78,34,13,10,32,32,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,71,114,97,112,104,105,99,115,47,83,86,71,47,49,46,49,47,68,84,68,47,115,118,103,49,49,46,100,116,100,34,62,13,10,13,10,60,115,118,103,32,120,109,108,110,115,61,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,50,48,48,48,47,115,118,103,34,13,10,32,119,105,100,116,104,61,34,52,54,55,34,32,104,101,105,103,104,116,61,34,52,54,50,34,62,13,10,32,32,60,114,101,99,116,32,120,61,34,56,48,34,32,121,61,34,54,48,34,32,119,105,100,116,104,61,34,50,53,48,34,32,104,101,105,103,104,116,61,34,50,53,48,34,32,114,120,61,34,50,48,34,13,10,32,32,32,32,32,32,115,116,121,108,101,61,34,102,105,108,108,58,35,102,102,48,48,48,48,59,32,115,116,114,111,107,101,58,35,48,48,48,48,48,48,59,115,116,114,111,107,101,45,119,105,100,116,104,58,50,112,120,59,34,32,47,62,13,10,32,32,13,10,32,32,60,114,101,99,116,32,120,61,34,49,52,48,34,32,121,61,34,49,50,48,34,32,119,105,100,116,104,61,34,50,53,48,34,32,104,101,105,103,104,116,61,34,50,53,48,34,32,114,120,61,34,52,48,34,13,10,32,32,32,32,32,32,115,116,121,108,101,61,34,102,105,108,108,58,35,48,48,48,48,102,102,59,32,115,116,114,111,107,101,58,35,48,48,48,48,48,48,59,32,115,116,114,111,107,101,45,119,105,100,116,104,58,50,112,120,59,13,10,32,32,32,32,32,32,102,105,108,108,45,111,112,97,99,105,116,121,58,48,46,55,59,34,32,47,62,13,10,60,47,115,118,103,62

@maliMirkec
Copy link
Author

Does my fix help?

#221

@Aankhen
Copy link

Aankhen commented Apr 17, 2024

It does, but the approach concerns me. There ought to be some way to get the right content from the request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants