From 6f3e935bbb250e10ec3312f96c902df0da889cea Mon Sep 17 00:00:00 2001 From: Tomas Aparicio Date: Mon, 6 Apr 2015 03:42:30 +0200 Subject: [PATCH] feat(metadata): add tests --- DOCS.md | 284 +++++++++++++++++++++++++++++++++++++++++++++++ README.md | 272 ++++++++++++++++++++++++++++++++++++++++++++- metadata_test.go | 59 ++++++++++ 3 files changed, 614 insertions(+), 1 deletion(-) create mode 100644 DOCS.md create mode 100644 metadata_test.go diff --git a/DOCS.md b/DOCS.md new file mode 100644 index 0000000..887c930 --- /dev/null +++ b/DOCS.md @@ -0,0 +1,284 @@ +# bimg +-- + +```bash +import "gopkg.in/h2non/bimg.v0" +``` + +## Usage + +```go +const QUALITY = 80 +``` + +```go +const Version = "0.1.0" +``` + +#### func DetermineImageTypeName + +```go +func DetermineImageTypeName(buf []byte) string +``` + +#### func IsTypeNameSupported + +```go +func IsTypeNameSupported(t string) bool +``` + +#### func IsTypeSupported + +```go +func IsTypeSupported(t ImageType) bool +``` + +#### func Read + +```go +func Read(path string) ([]byte, error) +``` + +#### func Resize + +```go +func Resize(buf []byte, o Options) ([]byte, error) +``` + +#### type Angle + +```go +type Angle int +``` + + +```go +const ( + D0 Angle = C.VIPS_ANGLE_D0 + D90 Angle = C.VIPS_ANGLE_D90 + D180 Angle = C.VIPS_ANGLE_D180 + D270 Angle = C.VIPS_ANGLE_D270 +) +``` + +#### type Direction + +```go +type Direction int +``` + + +```go +const ( + HORIZONTAL Direction = C.VIPS_DIRECTION_HORIZONTAL + VERTICAL Direction = C.VIPS_DIRECTION_VERTICAL +) +``` + +#### type Gravity + +```go +type Gravity int +``` + + +```go +const ( + CENTRE Gravity = iota + NORTH + EAST + SOUTH + WEST +) +``` + +#### type Image + +```go +type Image struct { +} +``` + + +#### func NewImage + +```go +func NewImage(buf []byte) *Image +``` + +#### func (*Image) Convert + +```go +func (i *Image) Convert(t ImageType) ([]byte, error) +``` + +#### func (*Image) Crop + +```go +func (i *Image) Crop(width int, height int) ([]byte, error) +``` + +#### func (*Image) Extract + +```go +func (i *Image) Extract(top int, left int, width int, height int) ([]byte, error) +``` + +#### func (*Image) Flip + +```go +func (i *Image) Flip() ([]byte, error) +``` + +#### func (*Image) Flop + +```go +func (i *Image) Flop() ([]byte, error) +``` + +#### func (*Image) Metadata + +```go +func (i *Image) Metadata() (ImageMetadata, error) +``` + +#### func (*Image) Process + +```go +func (i *Image) Process(o Options) ([]byte, error) +``` + +#### func (*Image) Resize + +```go +func (i *Image) Resize(width int, height int) ([]byte, error) +``` + +#### func (*Image) Rotate + +```go +func (i *Image) Rotate(a Angle) ([]byte, error) +``` + +#### func (*Image) Size + +```go +func (i *Image) Size() (ImageSize, error) +``` + +#### func (*Image) Type + +```go +func (i *Image) Type() string +``` + +#### type ImageMetadata + +```go +type ImageMetadata struct { + Orientation int + Alpha bool + Profile bool + Space int + Type string + Size ImageSize +} +``` + + +#### func Metadata + +```go +func Metadata(buf []byte) (ImageMetadata, error) +``` + +#### type ImageSize + +```go +type ImageSize struct { + Width int + Height int +} +``` + + +#### func Size + +```go +func Size(buf []byte) (ImageSize, error) +``` + +#### type ImageType + +```go +type ImageType int +``` + + +```go +const ( + UNKNOWN ImageType = iota + JPEG + WEBP + PNG + TIFF + MAGICK +) +``` + +#### func DetermineImageType + +```go +func DetermineImageType(buf []byte) ImageType +``` + +#### type Interpolator + +```go +type Interpolator int +``` + + +```go +const ( + BICUBIC Interpolator = iota + BILINEAR + NOHALO +) +``` + +#### func (Interpolator) String + +```go +func (i Interpolator) String() string +``` + +#### type Options + +```go +type Options struct { + Height int + Width int + Top int + Left int + Crop bool + Enlarge bool + Extend int + Embed bool + Quality int + Compression int + Type ImageType + Rotate Angle + Flip Direction + Gravity Gravity + Interpolator Interpolator +} +``` + + +#### type Vips + +```go +type Vips struct { +} +``` diff --git a/README.md b/README.md index b2ba753..5a7143c 100644 --- a/README.md +++ b/README.md @@ -43,11 +43,13 @@ The [install script](https://github.com/lovell/sharp/blob/master/preinstall.sh) ## API +### Example + ```go import ( "fmt" "os" - "gopkg.in/h2non/bimg" + "gopkg.in/h2non/bimg.v0" ) options := bimg.Options{ @@ -63,6 +65,274 @@ if err != nil { } ``` +#### func DetermineImageTypeName + +```go +func DetermineImageTypeName(buf []byte) string +``` + +#### func IsTypeNameSupported + +```go +func IsTypeNameSupported(t string) bool +``` + +#### func IsTypeSupported + +```go +func IsTypeSupported(t ImageType) bool +``` + +#### func Read + +```go +func Read(path string) ([]byte, error) +``` + +#### func Resize + +```go +func Resize(buf []byte, o Options) ([]byte, error) +``` + +#### type Angle + +```go +type Angle int +``` + + +```go +const ( + D0 Angle = C.VIPS_ANGLE_D0 + D90 Angle = C.VIPS_ANGLE_D90 + D180 Angle = C.VIPS_ANGLE_D180 + D270 Angle = C.VIPS_ANGLE_D270 +) +``` + +#### type Direction + +```go +type Direction int +``` + + +```go +const ( + HORIZONTAL Direction = C.VIPS_DIRECTION_HORIZONTAL + VERTICAL Direction = C.VIPS_DIRECTION_VERTICAL +) +``` + +#### type Gravity + +```go +type Gravity int +``` + + +```go +const ( + CENTRE Gravity = iota + NORTH + EAST + SOUTH + WEST +) +``` + +#### type Image + +```go +type Image struct { +} +``` + + +#### func NewImage + +```go +func NewImage(buf []byte) *Image +``` + +#### func (*Image) Convert + +```go +func (i *Image) Convert(t ImageType) ([]byte, error) +``` + +#### func (*Image) Crop + +```go +func (i *Image) Crop(width int, height int) ([]byte, error) +``` + +#### func (*Image) Extract + +```go +func (i *Image) Extract(top int, left int, width int, height int) ([]byte, error) +``` + +#### func (*Image) Flip + +```go +func (i *Image) Flip() ([]byte, error) +``` + +#### func (*Image) Flop + +```go +func (i *Image) Flop() ([]byte, error) +``` + +#### func (*Image) Metadata + +```go +func (i *Image) Metadata() (ImageMetadata, error) +``` + +#### func (*Image) Process + +```go +func (i *Image) Process(o Options) ([]byte, error) +``` + +#### func (*Image) Resize + +```go +func (i *Image) Resize(width int, height int) ([]byte, error) +``` + +#### func (*Image) Rotate + +```go +func (i *Image) Rotate(a Angle) ([]byte, error) +``` + +#### func (*Image) Size + +```go +func (i *Image) Size() (ImageSize, error) +``` + +#### func (*Image) Type + +```go +func (i *Image) Type() string +``` + +#### type ImageMetadata + +```go +type ImageMetadata struct { + Orientation int + Alpha bool + Profile bool + Space int + Type string + Size ImageSize +} +``` + + +#### func Metadata + +```go +func Metadata(buf []byte) (ImageMetadata, error) +``` + +#### type ImageSize + +```go +type ImageSize struct { + Width int + Height int +} +``` + + +#### func Size + +```go +func Size(buf []byte) (ImageSize, error) +``` + +#### type ImageType + +```go +type ImageType int +``` + + +```go +const ( + UNKNOWN ImageType = iota + JPEG + WEBP + PNG + TIFF + MAGICK +) +``` + +#### func DetermineImageType + +```go +func DetermineImageType(buf []byte) ImageType +``` + +#### type Interpolator + +```go +type Interpolator int +``` + + +```go +const ( + BICUBIC Interpolator = iota + BILINEAR + NOHALO +) +``` + +#### func (Interpolator) String + +```go +func (i Interpolator) String() string +``` + +#### type Options + +```go +type Options struct { + Height int + Width int + Top int + Left int + Crop bool + Enlarge bool + Extend int + Embed bool + Quality int + Compression int + Type ImageType + Rotate Angle + Flip Direction + Gravity Gravity + Interpolator Interpolator +} +``` + + +#### type Vips + +```go +type Vips struct { +} +``` + ## License MIT - Tomas Aparicio diff --git a/metadata_test.go b/metadata_test.go new file mode 100644 index 0000000..49c0b48 --- /dev/null +++ b/metadata_test.go @@ -0,0 +1,59 @@ +package bimg + +import ( + "io/ioutil" + "os" + "path" + "testing" +) + +func TestSize(t *testing.T) { + files := []struct { + name string + width int + height int + }{ + {"test.jpg", 1680, 1050}, + {"test.png", 400, 300}, + {"test.webp", 550, 368}, + } + + for _, file := range files { + size, err := Size(readFile(file.name)) + if err != nil { + t.Fatalf("Cannot read the image: %#v", err) + } + + if size.Width != file.width || size.Height != file.height { + t.Fatalf("Unexpected image size: %dx%d", size.Width, size.Height) + } + } +} + +func TestMetadata(t *testing.T) { + files := []struct { + name string + format string + }{ + {"test.jpg", "jpeg"}, + {"test.png", "png"}, + {"test.webp", "webp"}, + } + + for _, file := range files { + size, err := Metadata(readFile(file.name)) + if err != nil { + t.Fatalf("Cannot read the image: %#v", err) + } + + if size.Type != file.format { + t.Fatalf("Unexpected image format: %s", file.format) + } + } +} + +func readFile(file string) []byte { + data, _ := os.Open(path.Join("fixtures", file)) + buf, _ := ioutil.ReadAll(data) + return buf +}