diff --git a/imagemeta/bmp.go b/imagemeta/bmp.go index c37feb52..8dddd8af 100644 --- a/imagemeta/bmp.go +++ b/imagemeta/bmp.go @@ -29,11 +29,16 @@ func DecodeBmpMeta(r io.Reader) (Meta, error) { if infoSize >= 40 { width = int(binary.LittleEndian.Uint32(tmp[18:22])) - height = int(binary.LittleEndian.Uint32(tmp[22:26])) + height = int(int32(binary.LittleEndian.Uint32(tmp[22:26]))) } else { // CORE width = int(binary.LittleEndian.Uint16(tmp[18:20])) - height = int(binary.LittleEndian.Uint16(tmp[20:22])) + height = int(int16(binary.LittleEndian.Uint16(tmp[20:22]))) + } + + // height can be negative in Windows bitmaps + if height < 0 { + height = -height } return &meta{