mirror of
https://github.com/golang/go.git
synced 2024-10-01 23:37:14 +00:00
image/gif: enable images with <8 bits per pixel.
R=nigeltao CC=golang-dev https://golang.org/cl/4552042
This commit is contained in:
parent
ff1093852f
commit
de7c28fe76
@ -30,6 +30,7 @@ var imageTests = []imageTest{
|
|||||||
// to GIF loses significant image quality.
|
// to GIF loses significant image quality.
|
||||||
{"testdata/video-001.gif", 64 << 8},
|
{"testdata/video-001.gif", 64 << 8},
|
||||||
{"testdata/video-001.interlaced.gif", 64 << 8},
|
{"testdata/video-001.interlaced.gif", 64 << 8},
|
||||||
|
{"testdata/video-001.5bpp.gif", 128 << 8},
|
||||||
// JPEG is a lossy format and hence needs a non-zero tolerance.
|
// JPEG is a lossy format and hence needs a non-zero tolerance.
|
||||||
{"testdata/video-001.jpeg", 8 << 8},
|
{"testdata/video-001.jpeg", 8 << 8},
|
||||||
{"testdata/video-001.png", 0},
|
{"testdata/video-001.png", 0},
|
||||||
|
@ -173,11 +173,10 @@ Loop:
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if litWidth > 8 {
|
if litWidth < 2 || litWidth > 8 {
|
||||||
return fmt.Errorf("gif: pixel size in decode out of range: %d", litWidth)
|
return fmt.Errorf("gif: pixel size in decode out of range: %d", litWidth)
|
||||||
}
|
}
|
||||||
// A wonderfully Go-like piece of magic. Unfortunately it's only at its
|
// A wonderfully Go-like piece of magic.
|
||||||
// best for 8-bit pixels.
|
|
||||||
lzwr := lzw.NewReader(&blockReader{r: d.r}, lzw.LSB, int(litWidth))
|
lzwr := lzw.NewReader(&blockReader{r: d.r}, lzw.LSB, int(litWidth))
|
||||||
if _, err = io.ReadFull(lzwr, m.Pix); err != nil {
|
if _, err = io.ReadFull(lzwr, m.Pix); err != nil {
|
||||||
break
|
break
|
||||||
@ -379,7 +378,6 @@ func (d *decoder) uninterlace(m *image.Paletted) {
|
|||||||
|
|
||||||
// Decode reads a GIF image from r and returns the first embedded
|
// Decode reads a GIF image from r and returns the first embedded
|
||||||
// image as an image.Image.
|
// image as an image.Image.
|
||||||
// Limitation: The file must be 8 bits per pixel.
|
|
||||||
func Decode(r io.Reader) (image.Image, os.Error) {
|
func Decode(r io.Reader) (image.Image, os.Error) {
|
||||||
var d decoder
|
var d decoder
|
||||||
if err := d.decode(r, false); err != nil {
|
if err := d.decode(r, false); err != nil {
|
||||||
@ -397,7 +395,6 @@ type GIF struct {
|
|||||||
|
|
||||||
// DecodeAll reads a GIF image from r and returns the sequential frames
|
// DecodeAll reads a GIF image from r and returns the sequential frames
|
||||||
// and timing information.
|
// and timing information.
|
||||||
// Limitation: The file must be 8 bits per pixel.
|
|
||||||
func DecodeAll(r io.Reader) (*GIF, os.Error) {
|
func DecodeAll(r io.Reader) (*GIF, os.Error) {
|
||||||
var d decoder
|
var d decoder
|
||||||
if err := d.decode(r, false); err != nil {
|
if err := d.decode(r, false); err != nil {
|
||||||
|
BIN
src/pkg/image/testdata/video-001.5bpp.gif
vendored
Normal file
BIN
src/pkg/image/testdata/video-001.5bpp.gif
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.1 KiB |
Loading…
Reference in New Issue
Block a user