From 98d9d078e2cafe8948b3eb23e4b6eb0fd373537a Mon Sep 17 00:00:00 2001 From: Weilin Shi <934587911@qq.com> Date: Tue, 10 Oct 2017 11:05:46 +0800 Subject: [PATCH] add: LoadFontFromReader API update: readme and history --- README.md | 2 +- captcha.go | 13 ++++++++++++- captcha_test.go | 12 ++++++++++++ history.md | 3 +++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7b68f2a..befb37a 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ func handle(w http.ResponseWriter, r *http.Request) { session.Values["captcha"] = data.Text session.Save(r, w) // send image data to client - data.WriteTo(w) + data.WriteImage(w) } ``` diff --git a/captcha.go b/captcha.go index 5cc6fdd..f8990e0 100644 --- a/captcha.go +++ b/captcha.go @@ -2,6 +2,7 @@ package captcha import ( + "bytes" "github.com/golang/freetype" "github.com/golang/freetype/truetype" "golang.org/x/image/font" @@ -83,13 +84,23 @@ func init() { ttfFont, _ = freetype.ParseFont(ttf) } -// LoadFont let you load an external font +// LoadFont let you load an external font. func LoadFont(fontData []byte) error { var err error ttfFont, err = freetype.ParseFont(fontData) return err } +// LoadFontFromReader load an external font from an io.Reader interface. +func LoadFontFromReader(reader io.Reader) error { + var buf bytes.Buffer + if _, err := io.Copy(&buf, reader); err != nil { + return err + } + + return LoadFont(buf.Bytes()) +} + // New creates a new captcha. // It returns captcha data and any freetype drawing error encountered func New(width int, height int, option ...SetOption) (*Data, error) { diff --git a/captcha_test.go b/captcha_test.go index c95b71b..a04f83a 100644 --- a/captcha_test.go +++ b/captcha_test.go @@ -5,6 +5,7 @@ import ( "golang.org/x/image/font/gofont/goregular" "image/color" "math/rand" + "os" "testing" ) @@ -73,6 +74,17 @@ func TestLoadFont(t *testing.T) { } } +func TestLoadFontFromReader(t *testing.T) { + file, err := os.Open("./fonts/Comismsh.ttf") + if err != nil { + t.Fatal("Fail to load test file") + } + + if err = LoadFontFromReader(file); err != nil { + t.Fatal("Fail to load font from io.Reader") + } +} + func TestMaxColor(t *testing.T) { var result uint32 result = maxColor() diff --git a/history.md b/history.md index 95574cc..bbf1d18 100644 --- a/history.md +++ b/history.md @@ -1,13 +1,16 @@ 0.12.0 / 2017-10-07 =================== + * Add FontDPI and FontScale options 0.11.0 / 2017-09-28 =================== + * Add NewMathExpr API 0.10.0 / 2017-09-23 =================== + * Add LoadFont API 0.9.0 / 2017-09-20