Сapella
Cloud service for image storage and delivery. Upload files and accept image-filters on the fly with the simple API.
Made with
⚠️ Warninghttps://capella.pics is currently in beta.
Capella requires a project's token for image uploading. We are testing the service for a fast, stable and secure work.
You will be able to enroll your project to get a token later. Keep track of Capella's updates on https://github.com/codex-team/capella.
Content
Usage
-
Use capella.pics site, SDK or API to upload an image.
-
Add filters to uploaded image's URL and get processed image.
File requirements
Maximum size for the image file is 15MB
.
Capella supports these types of images:
- jpg
- jpeg
- png
- gif
- bmp
- tiff
Please note that each uploaded file will be converted to JPG with a white background and quality 90.
Capella SDKs
Upload API
Request
You can upload image file or send link to the image from your app by making a POST
request to https://capella.pics/upload
with the following data:
- file in
file
field or image url inlink
field - project's token in
token
field
You will get a JSON response from server.
Response
Each response will have at least success
and message
fields.
Field | Type | Description |
---|---|---|
success |
Boolean | Request validness |
message |
String | Result message |
Success
Field | Type | Description or value |
---|---|---|
success |
Boolean | true |
message |
String | Image uploaded |
id |
String | Image id |
url |
String | Full link to the uploaded image |
mime |
String | Mime type of the uploaded image |
width |
Integer | Image's width |
height |
Integer | Image's height |
color |
String | Average hex color of the image |
size |
Integer | Image's size in bytes |
{
"success": true,
"message": "Image uploaded",
"id": "69256e83-66e1-449a-b0c2-5414d332e3a6",
"url": "https:\/\/capella.pics\/69256e83-66e1-449a-b0c2-5414d332e3a6.jpg",
"mime": "image\/jpg",
"width": 1080,
"height": 700,
"color": "#9d908d",
"size": "176769"
}
Failure
Field | Type | Description or value |
---|---|---|
success |
Boolean | false |
message |
String | Reason why request was failed |
{
"success": false,
"message": "Wrong source mime-type"
}
List of messages for failed requests
Code | Message | Description |
---|---|---|
400 |
File or link is missing |
No expected data was found |
400 |
File is missing |
Filename is missing |
400 |
Link is missing |
Field link is empty |
400 |
Wrong source mime-type |
No support file with this mime-type |
400 |
Source is too big |
File size exceeds the limit |
400 |
Source is damaged |
Source has no data, size or mime-type |
400 |
Can't get headers for this URL |
Wrong url was passed |
403 |
Project token is bad or missing |
Request method is not POST |
405 |
Method not allowed |
Request method is not POST |
429 |
Too Many Requests |
Client has exceed plan limit. Retry later |
Example
CURL
# Upload file
curl -X POST https://capella.pics/upload -F "file=@/path/to/image.png" -F "token=aaaa-bbbb-cccc-dddd"
# Upload image by link
curl -X POST https://capella.pics/upload -d "link=https://path.to/image.png" -d "token=aaaa-bbbb-cccc-dddd"
Python
# Upload file
import requests
import json
files = {
'file': open('./image.png','rb')
}
data = {
'token': 'aaaa-bbbb-cccc-dddd'
}
r = requests.post('https://capella.pics/upload', files=files, data=data)
response = json.loads(r.content.decode('utf-8'))
print(response)
# Upload image by link
import requests
import json
data = {
'link': 'https://path.to/image.png',
'token': 'aaaa-bbbb-cccc-dddd'
}
r = requests.post('https://capella.pics/upload', data=data)
response = json.loads(r.content.decode('utf-8'))
print(response)
Getting image
You can get each uploaded image by the following URL scheme with or without extension.
https://capella.pics/<image_id>
or https://capella.pics/<image_id>.jpg
Filters
Apply filter by adding it at the end of the image URL.
https://capella.pics/<image_id>/<filter>/<params>
You can use as many filters as you want.
/<filter_1>/<params_1>/<filter_2>/<params_2>...
Note that the order of filters affects the result:
Filter | Result |
---|---|
/resize/100/crop/200 |
|
/crop/200/resize/100 |
Resize
Scale the image to the largest size such that both its width and its height can fit inside the target rectangle.
Param | Type | Description |
---|---|---|
width |
Integer | Maximum images width or maximum target square s size if no height was given |
height |
Integer | (optional) Maximum image's height |
Example: https://capella.pics/<image_id>/resize/300x400
Filter | Result |
---|---|
/resize/300x400 |
|
/resize/150 |
Crop
Cover the target rectangle by the image. Nice tool for creating covers or profile pics.
Param | Type | Description |
---|---|---|
width |
Integer | Target rectangles width or target square s size if no height was given |
height |
Integer | (optional) Target rectangle height |
Example: https://capella.pics/<image_id>/crop/150
Filter | Result |
---|---|
/crop/150 |
|
/crop/200x400 |
|
/crop/400x200 |
Additional params
If you need to crop an area from specified point then pass these params.
Note that this way width
and height
will be size params for the cropped area.
Param | Type | Description |
---|---|---|
x |
Integer | Left indent |
y |
Integer | Top indent |
Example: https://capella.pics/<image_id>/crop/400x300&500,150
Filter | Result |
---|---|
/crop/400x300&500,150 |
|
/crop/300x400&200,150 |
Pixelize
Render image using large colored blocks.
Param | Type | Description |
---|---|---|
pixels |
Integer | Number of pixels on the largest side |
Example: https://capella.pics/<image_id>/pixelize/20
Filter | Result |
---|---|
/pixelize/20 |
|
/pixelize/50 |
Cover
Place image to cover.
Param | Type | Description |
---|---|---|
color |
String | Hex code of cover's color without hash symbol |
Example: https://capella.pics/<image_id>/cover/eff2f5
Filter | Result |
---|---|
/cover/eff2f5 |
|
/crop/150/cover/fee |
Development and deployment
You can run your own Capella for usage or development. Follow our development and deployment guides.
Issues and improvements
Ask a question or report a bug on the create issue page.
Know how to improve Capella? Fork it and send pull request.
You can also drop a few lines to CodeX Team's email.