Esempio n. 1
0
File: image.go Progetto: npk/captcha
func drawSetfont(mw *imagick.MagickWand, dw *imagick.DrawingWand) {
	dw.SetFont(randFont())
	pw := imagick.NewPixelWand()
	pw.SetColor(colors[rand.Intn(len(colors))])
	dw.SetFontWeight(500)
	dw.SetFillColor(pw)
	dw.SetFontSize(33)
	pw.Destroy()
}
Esempio n. 2
0
// Set up the drawingwand "dw" for the given font name, font size, and colour.
// If the font or size changes sx get the new width of a space
// (the magickwand is required if it is necessary to query the font metrics)
func draw_setfont(mw *imagick.MagickWand, dw *imagick.DrawingWand, font string, size float64, colour string, sx *float64) {
	sflag := false

	if len(font) > 0 {
		dw.SetFont(font)
		sflag = true
	}

	if len(colour) > 0 {
		pw := imagick.NewPixelWand()
		pw.SetColor(colour)
		dw.SetFillColor(pw)
		pw.Destroy()
		sflag = true
	}

	if size > 0 {
		dw.SetFontSize(size)
	}

	// If either the font or the fontsize (or both) have changed
	// we need to get the size of a space again
	if sflag {
		fm := mw.QueryFontMetrics(dw, " ")
		*sx = fm.TextWidth
	}
}
Esempio n. 3
0
// Given a pattern name (which MUST have a leading #) and a pattern file,
// set up a pattern URL for later reference in the specified drawing wand
// Currently only used in Text Effect 2
func setTilePattern(dw *imagick.DrawingWand, pattern_name, pattern_file string) {
	tw := imagick.NewMagickWand()
	defer tw.Destroy()

	tw.ReadImage(pattern_file)
	// Read the tile's width and height
	w := tw.GetImageWidth()
	h := tw.GetImageHeight()

	dw.PushPattern(pattern_name[1:], 0, 0, float64(w), float64(h))
	dw.Composite(imagick.COMPOSITE_OP_SRC_OVER, 0, 0, 0, 0, tw)
	dw.PopPattern()
	dw.SetFillPatternURL(pattern_name)
}