func BuildMosaic(targetUrl, hashtag, clientId string) string { fmt.Println("Start mosaic...") sourceImageCount := 1000 tileSize := 20 builder := descriptors.NHistogramBuilder{2, 2} targetImage, _ := fetcher.GetImage(targetUrl) myMosaic := NewMosaic(targetImage.Bounds(), tileSize) myMosaic.FillDescriptions(targetImage, targetImage.Bounds(), builder) fmt.Println("My Mosaic will be", myMosaic.TilesWide, "x", myMosaic.TilesHigh) imgMeta := make(chan *fetcher.ImageMetaData, 100) tiles := make(chan *Tile, 100) done := make(chan bool) client := fetcher.NewInstagramClient(clientId) go client.Search(sourceImageCount, hashtag, imgMeta) for w := 0; w < 100; w++ { go TileWorker(w, builder, imgMeta, tiles, done) } go Matcher(&myMosaic, tiles, done) for i := 0; i < sourceImageCount; i++ { <-done } fmt.Println("DONE!") //file, _ := os.Create("mosaic.html") //fmt.Fprintf(file, MyMosaic.ToHTML()) return myMosaic.ToHTML(tileSize) }
func GetTile(b descriptors.DescriptionBuilder, url string) (Tile, error) { var t Tile t.Url = url m, err := fetcher.GetImage(url) if err != nil { return t, err } t.Description, err = b.GetDescription(m, m.Bounds()) if err != nil { return t, err } return t, nil }