Skip to content

Commit

Permalink
Add parse file and path
Browse files Browse the repository at this point in the history
  • Loading branch information
pengwei committed Aug 9, 2017
1 parent bc8a404 commit d1e95f5
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 17 deletions.
7 changes: 1 addition & 6 deletions examples/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,12 @@ package main

import (
"fmt"
"os"

imageType "github.com/mushroomsir/image-type"
)

func main() {
file, _ := os.Open("../testdata/test.jpg")

bytes := make([]byte, 256)
file.Read(bytes)
res, err := imageType.Parse(bytes)
res, err := imageType.ParsePath("../testdata/test.jpg")
if err == nil {
fmt.Println(res.Type) // jpg
fmt.Println(res.MimeType) // image/jpeg
Expand Down
26 changes: 25 additions & 1 deletion image.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"bufio"
"errors"
"io"
"os"
)

// ImageInfo ...
Expand All @@ -14,10 +15,33 @@ type ImageInfo struct {
Height int
}

var headerLength = 256

// ParsePath ...
func ParsePath(filePath string) (img *ImageInfo, err error) {
file, err := os.Open(filePath)
if err != nil {
return nil, err
}
bytes := make([]byte, headerLength)
file.Read(bytes)
return Parse(bytes)
}

// ParseFile ...
func ParseFile(file *os.File) (img *ImageInfo, err error) {
bytes := make([]byte, headerLength)
_, err = file.Read(bytes)
if err != nil {
return
}
return Parse(bytes)
}

// ParseReader ...
func ParseReader(rd io.Reader) (img *ImageInfo, err error) {
br := bufio.NewReader(rd)
bytes, err := br.Peek(256)
bytes, err := br.Peek(headerLength)
if err != nil {
return
}
Expand Down
13 changes: 3 additions & 10 deletions image_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,7 @@ import (

func TestJPEG(t *testing.T) {
assert := assert.New(t)
file, _ := os.Open("testdata/test.jpg")
bytes := make([]byte, 256)
file.Read(bytes)
res, err := Parse(bytes)
res, err := ParsePath("testdata/test.jpg")
if assert.Nil(err) {
assert.Equal("jpg", res.Type)
assert.Equal("image/jpeg", res.MimeType)
Expand All @@ -23,9 +20,7 @@ func TestJPEG(t *testing.T) {
func TestPng(t *testing.T) {
assert := assert.New(t)
file, _ := os.Open("testdata/test.png")
bytes := make([]byte, 256)
file.Read(bytes)
res, err := Parse(bytes)
res, err := ParseFile(file)
if assert.Nil(err) {
assert.Equal("png", res.Type)
assert.Equal("image/png", res.MimeType)
Expand All @@ -37,9 +32,7 @@ func TestPng(t *testing.T) {
func TestGif(t *testing.T) {
assert := assert.New(t)
file, _ := os.Open("testdata/test.gif")
bytes := make([]byte, 256)
file.Read(bytes)
res, err := Parse(bytes)
res, err := ParseReader(file)
if assert.Nil(err) {
assert.Equal("gif", res.Type)
assert.Equal("image/gif", res.MimeType)
Expand Down

0 comments on commit d1e95f5

Please sign in to comment.