Skip to content

image/gif: Can’t decode gifs that the browser handles #9856

Closed
@tessr

Description

@tessr

There are images which browsers can render but which image/gif chokes on.

The following runs successfully for most gifs:

import (
    "fmt"
    "image/gif"
    "os"
)

const example = "sample.gif"

func main() {
    fmt.Println("attempting to read gif")

    file, err := os.Open(example)
    if err != nil {
        fmt.Println("Can't open this file:", err)
        return
    }

    img, err := gif.Decode(file)
    if err != nil {
        fmt.Println("Can't decode this as a gif:", err)
        return
    }

    _ = img.Bounds()

    fmt.Println("gif decoded")
}

But when trying to run it on a particular gif (below), this happens:

$ go run main.go
attempting to read gif
Can't decode this as a gif: gif: not enough image data

Here’s the offending gif:
sample

Meanwhile, when I run this on another (similar) gif, I get the following:

$ go run main.go
attempting to read gif
Can't decode this as a gif: gif: too much image data

test

It seems like something might be wrong with these gifs, but browsers are still able to read them, so it seems that image/gif should be able to as well.

Tested with both 1.3 and 1.4.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions