Skip to content

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

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions