The Image Classification Service (ICS) allows users to submit image URLs and get the linked image classified (tagged) based on their perceived content. To do this, the service relies on the image recognition service Ximilar.
The project was developed within the VMware Bulgaria Talent Boost 2023.
Table of content:
GET
/images -> lists all analysed images from the DB
Parameter | Type | Required | Description |
---|---|---|---|
labels | Array of strings | No | Specifies the labels to filter the images. If provided, images with matching labels will be returned. |
Example response:
[
{
"imageId": 9,
"imageUrl": "https://example.com/image.jpg",
"createdAt": "2023-05-12T23:25:26.762859",
"updatedAt": "2023-05-12T23:25:26.762859",
"width": 1485.0,
"height": 835.0,
"imageService": "Ximilar",
"labels": [
{
"labelId": 67,
"labelDescription": "example"
},
{
"labelId": 65,
"labelDescription": "label"
}]
},
{
"imageId": 10,
"imageUrl": "https://example.com/image2.jpg",
"createdAt": "2023-06-12T23:25:26.762859",
"updatedAt": "2023-06-12T23:25:26.762859",
"width": 1485.0,
"height": 835.0,
"imageService": "Ximilar",
"labels": [
{
"labelId": 61,
"labelDescription": "example2"
},
{
"labelId": 65,
"labelDescription": "label"
}]
}
]
POST
/images
Parameter | Type | Required | Description |
---|---|---|---|
noCache | boolean | No | Defaults to false. When true, the service shall always perform categorisation, replacing any prior tags for the same image |
Example body:
{
"records": [
{
"_url": "https://example.com/image.jpg"
}
]
}
Example response:
{
"imageId": 10,
"imageUrl": "https://example.com/image.jpg",
"createdAt": "2023-05-13T12:25:58.22273",
"updatedAt": "2023-05-13T12:25:58.22273",
"width": 1338.0,
"height": 896.0,
"imageService": "Ximilar",
"labels": [
{
"labelId": 68,
"labelDescription": "easter"
},
{
"labelId": 3,
"labelDescription": "isolated"
},
{
"labelId": 4,
"labelDescription": "ladybug"
}
]
}
GET
/images/{id} -> returns an image with a specific image idDELETE
/images/{id} -> deletes image with a specific imageID from the DB
GET
/labels - lists all labels from the DB Example response:
[
{
"labelId": 1,
"labelDescription": "illustration"
},
{
"labelId": 2,
"labelDescription": "vector"
},
{
"labelId": 3,
"labelDescription": "isolated"
},
]
POST
/labels Example body:
{
"name":"newLabel"
}
Example response:
{
"labelId": 269,
"labelDescription": "newLabel"
}
GET
/labels/{id} -> returns a label with a specific label idDELETE
/labels/{id} -> deletes a label with a specific label id from the DB
Video: