All Projects → codex-team → capella

codex-team / capella

Licence: MIT license
Cloud service for image storage and delivery

Programming Languages

PHP
23972 projects - #3 most used programming language
javascript
184084 projects - #8 most used programming language
CSS
56736 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to capella

Imgproxy
Fast and secure standalone server for resizing and converting remote images
Stars: ✭ 5,688 (+4803.45%)
Mutual labels:  resize-images, crop-image
Imaginary
Fast, simple, scalable, Docker-ready HTTP microservice for high-level image processing
Stars: ✭ 4,107 (+3440.52%)
Mutual labels:  resize-images, crop-image
imagor
Fast, Docker-ready image processing server in Go and libvips
Stars: ✭ 2,276 (+1862.07%)
Mutual labels:  resize-images, crop-image
pikaso
Seamless and headless HTML5 Canvas library
Stars: ✭ 23 (-80.17%)
Mutual labels:  filter, crop-image
repository
[PHP 7] Implementation and definition of a base Repository in Domain land.
Stars: ✭ 26 (-77.59%)
Mutual labels:  filter
MedianFilter
A fast one-dimensional median filter algorithm
Stars: ✭ 43 (-62.93%)
Mutual labels:  filter
django-admin-search
Modal filter for django admin
Stars: ✭ 60 (-48.28%)
Mutual labels:  filter
js-image-carver
🌅 Content-aware image resizer and object remover based on Seam Carving algorithm
Stars: ✭ 1,467 (+1164.66%)
Mutual labels:  resize-images
blex
Fast Bloom filter with concurrent accessibility, powered by :atomics module.
Stars: ✭ 34 (-70.69%)
Mutual labels:  filter
react-image-crop
A responsive image cropping tool for React
Stars: ✭ 3,312 (+2755.17%)
Mutual labels:  crop-image
portcullis
Splice junction analysis and filtering from BAM files
Stars: ✭ 29 (-75%)
Mutual labels:  filter
scotty
java proxy
Stars: ✭ 44 (-62.07%)
Mutual labels:  filter
animethemes-dl
THIS PROJECT HAS BEEN ABANDONED. Downloads anime themes from animethemes.moe. Supports Batch download and MAL/AniList connecting.
Stars: ✭ 21 (-81.9%)
Mutual labels:  filter
esa-httpclient
An asynchronous event-driven HTTP client based on netty.
Stars: ✭ 82 (-29.31%)
Mutual labels:  filter
Codex
A free note-taking software for programmers and Computer Science students
Stars: ✭ 242 (+108.62%)
Mutual labels:  codex
sparkar-pixelate-shader
simple script-only pixelate shader with Facebook SparkAR.
Stars: ✭ 35 (-69.83%)
Mutual labels:  filter
link
Link Tool for Editor.js 2.0
Stars: ✭ 61 (-47.41%)
Mutual labels:  codex
FunFilter
Freely painted area, the software will automatically add filter on its.
Stars: ✭ 15 (-87.07%)
Mutual labels:  filter
spec-pattern
Specification design pattern for JavaScript and TypeScript with bonus classes
Stars: ✭ 43 (-62.93%)
Mutual labels:  filter
react-search-autocomplete
A search box that filters the provided array of objects
Stars: ✭ 152 (+31.03%)
Mutual labels:  filter

Сapella

Cloud service for image storage and delivery. Upload files and accept image-filters on the fly with the simple API.

Made with ❤️ by CodeX

⚠️ Warning

https://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

  1. Use capella.pics site, SDK or API to upload an image.

  2. 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 in link 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 squares 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 squares 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].