add: LoadFontFromReader API

update: readme and history
This commit is contained in:
Weilin Shi 2017-10-10 11:05:46 +08:00
parent dbb96819ea
commit 98d9d078e2
4 changed files with 28 additions and 2 deletions

View File

@ -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)
}
```

View File

@ -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) {

View File

@ -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()

View File

@ -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