def calculateAllJSON(objKeys, base64=True):

    p = settings["p"]
    dm = settings["dm"]
    db = settings["db"]
    classifier = settings["classifier"]

    json_array = []  # Array storing dicts of objects
    baseurl = p.image_url_prepend
    if baseurl == None:
        baseurl = ""
    image_channel_colors = p.image_channel_colors

    for objKey in objKeys:

        json = {}
        if p.table_id == None:
            json["image"] = objKey[0]
            json["object"] = objKey[1]
        else:
            json["table"] = objKey[0]
            json["image"] = objKey[1]
            json["object"] = objKey[2]

        paths = db.GetFullChannelPathsForImage(objKey)
        for i, color in enumerate(image_channel_colors):
            json[color] = baseurl + paths[i]

        if base64:
            from cStringIO import StringIO
            import base64

            # Convert to Base64
            output = StringIO()
            tile = imagetools.FetchTile(objKey)
            # tile = imagetools.FetchImage(objKey)
            im = imagetools.MergeChannels(tile, p.image_channel_colors)
            im = imagetools.npToPIL(im)
            im.save(output, format="JPEG")
            im_data = output.getvalue()
            data_url = "data:image/jpg;base64," + base64.b64encode(im_data)
            json["base64"] = data_url

        json_array.append(json)

    # Save as local file
    import json

    f = open("23classes.json", "w")
    json_string = json.dumps(json_array)
    f.write(json_string)
    f.close()

    return json_array
def calculateTrainingSetJSON(base64=False):

    p = settings["p"]
    dm = settings["dm"]
    db = settings["db"]
    classifier = settings["classifier"]

    json_array = []  # Array storing dicts of objects
    baseurl = p.image_url_prepend
    if baseurl == None:
        baseurl = ""
    image_channel_colors = p.image_channel_colors

    for label, objKey in classifier.trainingSet.entries:

        json = {}
        if p.table_id == None:
            json["image"] = objKey[0]
            json["object"] = objKey[1]
        else:
            json["table"] = objKey[0]
            json["image"] = objKey[1]
            json["object"] = objKey[2]

        json["class"] = label
        paths = db.GetFullChannelPathsForImage(objKey)
        for i, color in enumerate(image_channel_colors):
            json[color] = baseurl + paths[i]

        if base64:
            from cStringIO import StringIO
            import base64

            # Convert to Base64
            output = StringIO()
            tile = imagetools.FetchTile(objKey)
            # tile = imagetools.FetchImage(objKey)
            im = imagetools.MergeChannels(tile, p.image_channel_colors)
            im = imagetools.npToPIL(im)
            im.save(output, format="JPEG")
            im_data = output.getvalue()
            data_url = "data:image/jpg;base64," + base64.b64encode(im_data)
            json["base64"] = data_url

        json_array.append(json)

    return json_array