Stars: 122
Forks: 23
Pull Requests: 97
Issues: 46
Watchers: 25
Last Updated: 2021-08-26 22:42:10
Cloud service for image storage and delivery
License: MIT License
Languages: PHP, JavaScript, CSS, Dockerfile
Cloud service for image storage and delivery. Upload files and accept image-filters on the fly with the simple API.
Made with ❤️ by CodeX
⚠️ 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.
Use capella.pics site, SDK or API to upload an image.
Add filters to uploaded image's URL and get processed image.
Maximum size for the image file is 15MB
.
Capella supports these types of images:
Please note that each uploaded file will be converted to JPG with a white background and quality 90.
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
field or image url in link
fieldtoken
fieldYou will get a JSON response from server.
Each response will have at least success
and message
fields.
Field | Type | Description |
---|---|---|
success |
Boolean | Request validness |
message |
String | Result message |
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"
}
Field | Type | Description or value |
---|---|---|
success |
Boolean | false |
message |
String | Reason why request was failed |
{
"success": false,
"message": "Wrong source mime-type"
}
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 |
# 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"
# 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)
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
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 |
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 |
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 |
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 |
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 |
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 |
You can run your own Capella for usage or development. Follow our development and deployment guides.
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.